Simplificar arquitetura Spring, JSF e Hibernate (JPA)

Pessoal, desenvolvi uma aplicação para servir de modelo utilizando Spring, JSF, Hibernate. Achei que a arquitetura que eu utilizei é muito complexa e gostaria de uma ajuda do pessoal para simplificar o que desenvolvi.

  1. Criei meus Beans e seus Annotations
  2. Criei uma Interface DAO e depois a implementação da minha Interface, no caso criei um DAO para cada Classe acredito que criar uma Interface Genérica com o CRUD seja mais inteligente.
  3. Criei uma Interface para minha classe Service e depois a implementação da minha classe Interface
  4. Criei uma Classe que é a acessada pela minha pagina JSF e seus objetos.

Achei essa arquitetura muito complexa e inchada, alguém possui alguma sugestão do que posso melhorar ?

Obrigado!!

Rafael

Antes uma pergunta: precisa mesmo usar JSF?

Por que não tenta dar um fim neste DAO?

Uma boa justificativa pra isso?

Uma boa justificativa pra isso?[/quote]

IMHO se já está usando Hibernate (ou JPA), pode-se evitar o DAO e usar um PersistenceManager/EntityManager.

Ou seja, a implementação da camada de serviço já vai trabalhar em cima do model e salva o seu estado utilizando EntityManager ou PersistenceManager.

Obs: Entenda PersistenceManager como uma classe similar ao EntityManager do JPA, mas criado pelo próprio desenvolvedor.

Vocês acham que ainda justifica utilizar DAO’s? :roll:

Alguém discorda do que o Thiago disse? Principalmente na parte:

a implementação da camada de serviço já vai trabalhar em cima do model

tô iniciando no JPA e justamente com essa dúvida, pra que o DAO? ele ainda é necessário pra manter o acesso a dados desacoplado do negócio?

Rpz, concordo com o que o cara aí disse, esse DAO tá sobrando, qunado se trabalho com hibernate eu acho que o DAO perde o sentido, por o hibernate que faz o papel do DAO.

Esta questao de utilizar ou nao o DAo é algo que muitos descutem. Eu particulamente, acho melhor utilizar, pois facilita ate mesmo pra fazer testes em objetos na memoria.

Mas a questão é se você usar o DAO vai perder boa parte das funcionalidades que o Hibernate ou JPA prove, caso nao use estara deixando seu sistema menos flexivel,pois todo o seu sistema estará FORTEMENTE ACOPLADO a infraestrutura, neste caso o Mecanismo de ORM, pois vc vai espalhar todo o acesso ao EntityManagem pelo seu codigo.

Mas fica a seu criterio, melhor mesmo seria analisa com calma, pois um projeto nunca é pequeno, é apenas uma forma de melhor visualizar e analisar as melhores formas de resolver grandes problemas.

Att…