Pessoal
Estou desenvolvendo uma aplicação, utilizando EJB 3 e JPA, onde projetei da seguinte forma:
Os Servlets acessam os EJB’s, que é onde está a lógica da aplicação. Dentro do EJB, eu pego a referência do EntityManager, através de injeção de dependência.
Para cada entidade, eu criei uma interface DAO e uma classe DAO que implementa esta interface (a interface é para possibilitar outras implementações do DAO).
Tenho também uma classe abstrata GenericDAO que é estendida pelas classes DAO de cada entidade.
Tenho também uma classe DAOFactory, que me retorna cada classe DAO que eu quiser. Antes disso, passo a referência do EntityManager à ela, para que todos os DAO’s usem o mesmo EntityManager.
Hoje estava lendo na revista Mundo Java deste mês, no tópico “Aprendendo Padrões Java EE com uma História Interativa” (excelente tópico, por sinal), onde é apresentada uma arquitetura onde a lógica da aplicação está nos EJB’s e os DAO’s são outros EJB’s. Desta forma, um EJB acessa outro (que é o DAO) e lá que está todo o acesso ao banco de dados.
Achei bem interessante esta solução e bem mais simples do que a que eu uso.
Gostaria de saber a opinião de vocês a respeito. Qual destas soluções gostam mais, qual considera melhor, por que, pontos positivos ou negativos de cada uma… enfim, gostaria de saber a opinião de vocês sobre estes casos. Ou mesmo se tiverem alguma outra arquitetura para sugerir, acho que seria bastante interessante.
Enfim, o que vocês acham?
Obrigado