Com EJB3 é feio acessar o DAO direto do ManagedBean?

2 respostas
rafaelbtz

Boa tarde GUJ.

Estou desenvolvendo uma aplicação utilizando JSF 2 e EJB 3. Eu gosto de utilizar DAO então apesar de ter lido muitas discussões sobre isso eu criei meus DAOs, mas não os transformei em EJB só pra poder injetar o EntityManager. Eu crier uma Factory para DAOs e essa sim eu transformei em um EJB Local nela eu injeto o EntityManager e então crio o meu DAO com o new mesmo setando o EntityManager.

Mas agora surgiu uma dúvida, eu estou programando um método no ManagedBean que precisa somente fazer um find pela PK de uma entidade. A dúvida é: o que fica mais bonito (e correto) eu criar um método no EJB e esse método chama o DAO ou transformar o DAO em EJB e injeta-lo direto no ManagedBean pra ficar mais fácil.

Achei estranho criar o método no EJB que na verdade é uma duplicação do método no DAO:

public Usuario findById(Long id){
    return (Usuario)daoFactory.getDao(Usuario.class).findById(id);
}

Mas também achei estranho injetar o DAO no ManagedBean parece que eu estou pulando alguma coisa.

E ai como vocês fazem isso?

Obrigado.

2 Respostas

Andre_Brito

Jovem, me desculpe minha ignorância com EJB, mas vou dar minha opinião.

Isso dá uma baita de uma discussão (não somente sobre DAOs e EJBs, mas sobre acessar o EntityManager, que tem criação de boa (diferente da Factory) direto dos MBeans).

Por que você não faz assim:
JSF ou seja lá o que você usa <-> ManagedBeans <-> Interface das Sessions <-> Sessions? Não é mais fácil e mais rápido e mais ‘EJB’?

vitenho
Eu uso jsf -> ejb(aqui fica o entitymanager)

no fim das contas o genericdao te poupa muitas poucas chamadas ao entitymanager

e tbm as regras de negocio de uma entity na hora do update nunca sao somente em.merge(Entity e);

mas pra entities base, as simples de crud, generic dao eh uma boa

Criado 14 de janeiro de 2010
Ultima resposta 15 de jan. de 2010
Respostas 2
Participantes 3