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:
- 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)
- Se o cara simplesmente tirasse todas aquelas anotações e importações EJB das classes de Session Beans, o projeto ainda funcionaria, certo?
- 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:
- O Flávio respondeu muito bem.
- 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.
- 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?