Dúvida sobre uso de EJB

Olá,

Eu verifiquei o seguinte artigo: Aplicação Web Completa JSF EJB JPA JAAS.

Estou desenvolvendo uma aplicação para trabalho de faculdade e vou utilizar JSF + Hibernate. Gostaria de saber:

  1. Quais as vantagens e desvantagens do uso de EJB na aplicação do artigo acima? (não precisa citar tudo, só resumir o que é relevante)
  2. Se o cara simplesmente tirasse todas aquelas anotações e importações EJB das classes de Session Beans, o projeto ainda funcionaria, certo?
  3. Seria interessante utilizar EJB somente em projetos de grande porte/modularizados/distribuídos? Se for, entenderei o porque de não ver muita utilidade nele para meu projeto pequeno.

Obrigado!

Com o EJB vc poderá futuramente acessar as classes de uma aplicação swing ou mobile, ou outras aplicações na mesma jvm, e poderá contar com vários outros serviços que já vem com a especificação EJB, como timer service, jms, transações … sem tem que se preocupar em ficar colocando um tanto de framework.

Sou meio suspeito de falar desse ótimo post aí ( :lol: ) em cima mas… vamos lah:

  1. O Flávio respondeu muito bem.
  2. Não funcionaria. Pois por causa das anotações o JBoss está controlando as sessões e transações com o banco de dados. É preciso que você crie a conexão de modo manual a cada chamada do banco de dados. Aqui tem um exemplo: Hibernate 3 com JPA 2.
  3. Eu indico EJB para projeto grandes e pequenos, pois ele vai fazer todo o trabalho sujo para você de conexão/transação. Uma vez que a estrutura esteja pronta, seu uso é ultra fácil e simples.

Jake,

Quando você diz que o JBoss está controlando as transações do banco de dados está se referindo a haver uma única LUW para vários programas/session beans? É isso que aquele @PersistentContext faz? Poderia me explicar um pouco melhor?

E o que seria o JBoss estar controlando as sessões? Seriam as anotações @SessionBean? Não entendo qual a diferença de deixar essas classes com @SessionBean e sem @SessionBean, aparentemente a aplicação funcionaria do mesmo jeito. * Entendo como controlar sessão um recipiente onde eu possa incluir e recolher variáveis durante a conexão com um usuário / sessão, o que o HTTP sozinho não permite. Penso que qualquer servidor de aplicação web, como o Tomcat, permite controlar a sessão de usuários. O que um container de EJB faria de melhor?

Se estou falando muita besteira podes me recomendar um artigo bom sobre EJB? Vi vários vídeos e artigos, mas até agora não entendi que benefícios grandes isso traria para minha aplicação pequena. Você falou que acredita que EJB seja benéfico para aplicações pequenas também.

[quote=gpassero]Jake,

Quando você diz que o JBoss está controlando as transações do banco de dados está se referindo a haver uma única LUW para vários programas/session beans? É isso que aquele @PersistentContext faz? Poderia me explicar um pouco melhor?

E o que seria o JBoss estar controlando as sessões? Seriam as anotações @SessionBean? Não entendo qual a diferença de deixar essas classes com @SessionBean e sem @SessionBean, aparentemente a aplicação funcionaria do mesmo jeito.

Se estou falando muita besteira podes me recomendar um artigo bom sobre EJB? Vi vários vídeos e artigos, mas até agora não entendi que benefícios grandes isso traria para minha aplicação pequena. Você falou que acredita que EJB seja benéfico para aplicações pequenas também.[/quote]
Eu acho que é benefício pois eu sei como funciona.

Realmente você precisa estudar EJB e saber a diferença de um @Statless e um Statefull por exemplo.

@SessionBean não é anotação do ejb nem de JSF.

Quando eu digo transações eu digo transação com o Banco de Dados.

Começa por baixo já que você tem dificuldade. Entenda JDBC, depois vá para JPA/Hibernate e finalmente EJB.

Se sua aplicação é pequena e você não entendeu EJB fique apenas com JPA/Hibernate que você será feliz. [=

Jake,

Já conheço o suficiente de JDBC e Hibernate para minha aplicação, inclusive consigo implementá-la utilizando essas duas tecnologias.
No entanto, gostaria de aplicar EJB apenas para aprender mesmo, tens algum artigo ou apostila que recomendas?

Melhor livro que eu já li sobe EJB até agora foi esse: http://www.amazon.com/Enterprise-JavaBeans-3-0-ebook/dp/B0026OR326/ref=sr_1_8?s=digital-text&ie=UTF8&qid=1328028044&sr=1-8

Obrigado!