Amigos, este tópico não é uma dúvida, é um levantamento de uma discussão.
Recentemente tenho lido vários artigos sobre DAO - ORM - BUSINESS LOGIC no padrão MVC.
Desde antes da existência do Hibernate eu já implementava lógicas baseadas em Dao’s para as minhas Entidades.
Andei lendo alguns materiais sobre descarte da camada Dao porque dizem que “o Hibernate é seu dao”.
Tentei seriamente seguir esse tipo de conceito, onde o meu ORM estaria mais entrelaçado com a lógica de negócios e o resultado foi catastrófico. Tivemos que refatorar muitas linhas de código para separar uma camada Dao, para que pudéssemos encapsular as regras de persistência.
Daí então encontrei um pequeno problema, algumas consultas advém de regras de negócio, elas estão, muitas vezes, diretamente ligadas à camada de persistência.
Pensando nisso resolvi retornar objetos Criteria para a as regras de negócios. Até o momento não precisei remoldar a camada de persistência, pois confio no Hibernate. Porém se um dia eu quiser abstrair o Hibernate vou ter que refatorar toda a regra de negócio novamente.
Sou a favor da separação das regras de negócio das regras de persistência. E vocês, o que opinam em relação a isso?