Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

JSF e EJB

Em pesquisa na net, vi que é aconselhável uso de jsf2 + jboss seam + ejb. Por favor, alguém explique o que mudaria na nossa aplicação livraria se tivessemos que usar ejb. Na prática, as anotações dos nossos managed beans mudariam? ejb é uma especificação que possui objetivos parecidos com os jsf em alguma das camadas? É aconselhável usar EJB para aplicações de pequeno porte?

4 respostas

Opinião particular: eu não consideraria mais usar JBoss Seam, pois é uma tecnologia descontinuada. No lugar dela, utilizaria CDI, que é uma especificação do Java e sua utilização têm crescido.

Utilizando de CDI, as anotações dos seus ManagedBeans mudam, mas não por causa do EJB e sim por causa do CDI. Ele gerencia a injeção de dependências e contextualiza os objetos integrando perfeitamente com o ciclo de vida do JSF. Além disso, é o CDI quem faz a ponte entre o JSF e o EJB.

Nessa arquitetura JSF + CDI + EJB, este último fica responsável pelo gerenciamento das transações da JPA. Atualmente, com o EJB Light, ele é recomenado para aplicações de pequeno porte sim, antigamente que ficava difícil, pois ele era pesado demais.

Arthur, valeu pela resposta. tenho mais uma dúvida: O EJB substitui o Hibernate?

solução!

De jeito nenhum. EJB não faz, sozinho, conexão ao banco de dados. Enquanto que Hibernate, sozinho, não gerencia a transação de banco e conexões a webservices.

Hibernate é um framework ORM baseado na JPA (especificação). Hibernate é uma das várias implementações da JPA que existem no mercado. Outros exemplos são a OpenJPA e o EclipseLink. Acontece que o Hibernate é o mais utilizado.

O EJB é uma especificação do Java para lidar com coisas complexas. Apesar de ser a JPA quem realiza o acesso ao banco de dados e provê controle de transação, fazer o controle dessas transações somente pela JPA é uma dor de cabeça grande. O EJB gerencia isso muito melhor e no nível do servidor de aplicação, dessa forma, você não precisa se preocupar com sessões, fábrica, estado, cluster, etc. Tudo é gerenciado pelo EJB junto com o servidor. E, caso você precise controlar especificamente determinadas transações, basta configurar o EJB da maneira que precisar.

Além de ser um excelente controle de transação, o EJB também serve para lidar com WebServices e acesso remoto.

Ou seja, o Hibernate não substitui o EJB e vice-versa.

Finalmente entendi!!! Muito obrigado.