DAO com Hibernate

6 respostas
maresp

Como funciona a aplicação deste pattern com hibernate? Fiquei na dúvida depois de ler isso. Dá pra substituir DAO por Active Record pattern?

6 Respostas

caiofilipini

Não tenho a resposta para a segunda pergunta. Quanto a primeira, o GUJ2 implementa DAOs usando o Hibernate. Já deu uma olhada no código?

[]'s

maresp

Sim, já ví a implementação de DAO do GUJ2, é bem simples.
Pelo que entendí no link que passei, vc cria uma dependência de sua aplicação com o hibernate. Ou seja, vc tem que fazer tudo novamente se resolver mudar seu sistema de persistência.
Mas a minha dúvida mesmo é: Modelando uma classe Root que tenha os metodos básicos do hibernate (ex: save(obj), saveOrUpdate(obj), delete(obj), etc.) é possível extender essa classe e utilizar estes métodos na classe filha sem override?

kuchma

“maresp”:
Sim, já ví a implementação de DAO do GUJ2, é bem simples.
Pelo que entendí no link que passei, vc cria uma dependência de sua aplicação com o hibernate. Ou seja, vc tem que fazer tudo novamente se resolver mudar seu sistema de persistência.

Nao me sinto totalmente convencido com esse argumento. Vejamos: usa-se uma camada de persistencia para (pelo menos) abstrair o SGBD (ou outra fonte de dados, va la). Mudar de SGBD nao eh coisa rotineira - mas tudo bem, manter a independencia eh legal (alem disso em geral um ferramenta de mapeamento O/R traz outras vantagens).

Sera que abstrair a ferramenta de persistencia nao eh muito preciosismo? Claro, se o projeto ja contempla a utilizacao do pattern DAO, beleza. Agora, colocar mais uma camada soh para esconder o Hibernate? Nao sei nao…

Gostaria de conhecer a opiniao de outras pessoas a respeito disso. Alguem?

Sim. :smiley:

Marcio Kuchma

Daniel_Quirino_Olive

Ué? Por que não? Mudar de camada de persistência é algo que pode acontecer bem facilmente. DAOs já quebram um galhão para fazer esta abstração. Misturar DAO com Template Method fica mais lindo ainda.

kuchma

E por que sim? Cade os argumentos? :smiley:

Acho que nao eh bem o nosso caso, mas: http://c2.com/cgi/wiki?YouArentGonnaNeedIt

Ja conheco os argumentos do Core J2EE Patterns e o que normalmente lemos por ai - mas ainda nao vi na pratica. Entao ai vai: alguem ja utilizou uma camada DAO APENAS para abstrair o Hibernate e depois por algum motivo precisou dar manutencao no negocio tendo entao concluido que foi uma boa ideia ter feito isso?

Veja, nao sou contra fazer isso. Eh relativamente tranquilo implementar a ideia. Mas nao estou totalmente convencido da utilidade.

Marcio Kuchma

kuchma

Depois de postar fiquei pensando e lembrei de pelo menos um caso onde seria legal ter uma camada “protegendo” o Hibernate: controle de transações. Seria uma espécie de camada de “serviço” ou similar.

Marcio Kuchma

Criado 14 de julho de 2004
Ultima resposta 14 de jul. de 2004
Respostas 6
Participantes 4