Estou com um dúvida aqui na hora de implementar um novo projeto.
Para entender melhor eu vou usar como exemplo a classe Usuario que seria o objeto de dominio e o UsuarioDAO que é o DAO.
Como em todo projeto nós temos a camada de persistência e temos também os objetos de domínio.
Porém muitos frameworks implementam a persistência com os objetos de domínio. Onde a classe Usuario extende a classe UsuarioDAO e os métodos CRUD (e métodos como findAllBy* ou findBy*), tal como qualquer outro método referente ao objeto ficam no objeto.
Podemos usar como exemplo o CakePHP (classe Model extende AppModel), ZendFramework (voce extende a classe Zend_DB_Table), entre outros.
No Java uma prática comum é você separar essas responsabilidades.
Nós temos a classe Usuario com seus getters e setters (ou não) e seus demais métodos, menos a parte de persistência, que fica a cargo do DAO Layer.
Salvando um usuario com Objeto de domínio e DAO juntos (em PHP):
$usuario = new Usuario(); $usuario->blablabla... $usuario->save();
De outra forma:
$usuario = new Usuario(); $usuario->blablabla... $usuarioDAO = new UsuarioDAO(); $usuarioDAO->create($usuario);
Minhas pergunta são:
Qual dessas práticas você utiliza?
Qual acha mais "correta"?
Obrigado por ajudarem ...
[]'s
Só uma adição...
No Zend como pode usar o Zend_Db_Adapter como DAO, mas dessa forma você não teria o objeto de domínio, que no caso seria uma extensão de Zend_Db_Table. Mas é claro que você pode usar estes recursos da forma que você quiser.
E como não sou o dono da verdade me corrijam caso eu esteja errado.