Hibernate + XDoclet

estou aprendendo a usar o hibernate e também estou iniciando em xdoclet… fiz um teste com uma classe Pessoa.java que através do xdoclet gera o arquivo Pessoa.hbm.xml. até ai tudo certo
gostaria de saber se tem como eu gerar o arquivo PessoaDAO.java, que seria responsável por inserir, consultar, etc… com o xdoclet

pelo que eu saiba e eu uso o xdoclet serve para gerar os arquivos .xml apenas, tanto apra hibernate, como EJB e etc…

agora ele chegar arquivo .java acho que nao faz isso nao

o PessoaDAO.java vc cria ele na mao e nem é tao dificil assim, usando conceito de interface voce cria apenas um arquivo DAO e usa pra toda sua aplicação

To enfrentando a mesma dúvida aqui na empresa.

Mas a verdade é que, do ponto de vista de padroes, sua classe Pessoa é que é um DAO. C só vai ter getters e setters, e uns métodos auxiliares que usam esses getters e setters ou chamam getters e setters dos argumentos (que tb são DAOs).

Pra consultas, vc pode definir custom queries, e vc deve fazer todas essas coisas fora da sua classe Pessoa.

Se vc quer abstrair tudo isso, vc precisa pensar com cuidado nas suas transações. Abstrair transações é uma coisa complexa e vai aumentar muito o seu código.

Uma boa idéia é roubar do Torque o conceito de Peer (ok, ok, não é do Torque pq ele tb roubou de alguém, mas isso é outra história), e esse Peer pode funcionar como auxiliar pra executar operações complexas.

Mas quem quer que manipule as transações tem que ter acesso à Session, ou pelo menos a uma SessionFactory. Cuidado com as “inicializações preguiçosas” também.

Na aplicação que eu tô fazendo, existem poucos DAOs e a gente tá usando fachadas simples com acesso à SessionFactory.

[]s!!

para EJB o xdoclet gera alguns .java também :slight_smile:
gera Session Facade, Value Object, …
para o hibernate apenas os XML

no hibernate é melhor os DAOs acessarem apenas o SessionFactory, ja que as sessions não são thread safe :slight_smile:

E nem deveriam ser, antes que alguem saia protestando :wink:

concordo,
a observação foi só para que ninguem tentasse utiliza-las desta maneira :slight_smile: