[Resolvido] Como organizar um aplicação com padrões etc

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.