Opa galera beleza,?
Estou iniciando um estudo de EJB e queria entender como organizar minha aplicação.
Tenho um Projeto Web e um EJB
Onde quero fazer um CRUD de um simples Funcionário.
Uma que ouço muito no trabalho é que DAO não é serviço isto querdizer que ele não deve ser um EJB?
Então se for isso eu preciso de um intermediário entre minha Aplicação e meu Dao esse intermediário é o EJB? Vejo que na empresa eles utilizam do padrão façade,este deve ser utilizado no EJB?
Quem puder me dar uma luz agradeço,
Abraço pessoal
Está certo, sim. O DAO não deve ser exposto diretamente como EJB, já que vários clientes diferentes podem acessar o EJB (ou seja, expor diretamente o DAO pode tornar a sua aplicação insegura). Além do mais, em alguns casos, vários DAOs diferentes devem ser acessados por operação. Se o DAO for exposto diretamente, e os clientes fizerem uso direto, implicaria em: 1 - os clientes tem que fazer várias requisições para alcançar um único objetivo. 2 - haveria overhead excessivo, já que, no caso de EJBs remotos, isso gera chamadas de rede, aumentando o tráfego e diminuindo o tempo de resposta da aplicação. Logo, os façades resolvem bem esses problemas, já que eles podem ser modelados de maneira a recuperar o usuário a cada chamada e fazer todas as operações dentro do contexto EJB - ou seja, haveria apenas uma chamada de rede para várias operações.
Talvez hoje você não entenda esse padrão porque o que você quer fazer é um simples CRUD de Funcionário. Mas imagine o caso dessa autenticação, onde, por exemplo, você não possui o objeto Usuário, mas sim, duas strings com login e senha. Sua aplicação deve ser responsável por verificar a autenticidade destes (talvez criptografando / descriptografando a senha) e fazer também o CRUD propriamente dito. Com o façade, você remove esta responsabilidade do cliente, entendeu?
[]´s
asaudate, Eu acho que eu entendi digamos que eu queira trazer dados que estejam em vários DAOS e isso me retornaria o perfil do usuário então eu crio um método no serviço pegarUsuario() meu façade onde ele tem todas as chamadas aos DAOs e depois de executar tudo me retorna o que eu quero.
Com issoeu só tenho 1 chamada na rede.
Seria isso?
Abraço, obrigado
Mais do que isso, você retira toda a responsabilidade do cliente de fazer essa recuperação. Vale lembrar que Façade é um padrão GoF, ou seja, não foi catalogado tendo a idéia de sistemas distribuídos em mente. É mais pra retirar , mesmo, a responsabilidade de fazer várias invocações diferentes a vários serviços diferentes. A parte de chamada de redes é um bônus na história toda.
[]´s
Valeu mano, muito obrigado.