Olá pessoal!
Sou novo na programação java e OO. Estou desenvolvendo um projeto para a faculdade e tenho que criar uma camada de dados e persistência. Mas como cria a camada de persistência? Sei que não é uma boa prática colocar as funções de salvamento e alterações dos dados no banco na classe que contém esses dados. Estou meio confuso? Alguém pode me ajudar?
Olá, bom dia…
Seja bem vindo.
Bom, as classes que contém os dados, nós chamamos de model…
por exemplo: Cliente, contém id,nome,rg, setteres e getteres…
aí vc terá ClienteDAO, onde colocará o CRUD(create,read,update,delete)…então vc transportará os dados para fazer as operações no banco através do objeto cliente…
....
public void save(Cliente cliente){
...
}
...
para cada objeto model, vc terá um objeto DAO…seria interessante que esses objetos DAO, extendessem um BASEDAO, onde vc faria a conexao com o banco, e por herança todos os DAO’s teriam um método getConnection…
Acho que é isso.
t+
[]'s
Também estou nessa fase do projeto, mas um pouco a frente.
Já defini que vou usar DAO com SQL puro.
A dúvida é como/onde meus objetos de modelos devem estar/ser completamente montados. Opcoes que levantei:
- Fazer select’s nos meus dados com JOIN e montar os objetos já completos. Nesse caso os DAO’s de outros objetos poderiam perder o sentido;
- Fazer um select sem JOIN e fazer chamadas aos outros DAO pra recuperar os objetos referenciados (e aconselhavel um DAO conhecer outro?);
- Os DAO’s retornariam objetos com apenas os valores das tabela para um montador que chamaria outros DAO para entao retornar meus objetos de modelo pra o cliente. Ak eu teria, hipoteticamente, classe Cliente com referencia para os outros objetos e classe ClienteThin com os identificadores dos objetos relacionados.
Queria saber se vcs usam uma dessas tres formas, ou se usam outra.
Todos os exemplos que olhei, incluindo o
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
, nao tratam disso. Consideram que Cliente tera um campo cidade com o nome da cidade e nao uma referencia para um objeto da classe Cidade, como de fato eh o q acontece.
a opção 2 é a mais simples e direta eu diria, mas no caso onde há muitas referências entre objetos/tabelas, e uma carga de dados muito grande é retornada do banco, é interessante a alternativa 3, q nada mais é do q lazi loading … de uma pesquisada sobre