Aiutami a capire SEAM e Hibernate?
-
27-09-2019 - |
Domanda
voglio usare SEAM quadro con Hibernate, ma non si vuole usare EJB. Non posso usare EJB.
La prima domanda è, posso utilizzare EntityManager? o è EntityManager una parte di EJB?
Come posso ottenere l'accesso a utilizzare Hibernate nella mia componente SEAM?
Grazie, Filippo
Soluzione
Con Seam, è possibile utilizzare Hibernate o JPA (EntityManager). Funziona a prescindere dalla EJB. È possibile utilizzare POJO normale, se si desidera.
Come posso ottenere l'accesso a utilizzare Hibernate nella mia componente SEAM?
Qui va impostazioni Hibernate WEB-INF / components.xml
SessionFactory Impostazioni
<persistence:hibernate-session-factory name="sessionFactory" cfg-resource-name="app.cfg.xml"/>
Dove app.cfg.xml viene inserito nella radice del classpath
Sessione Impostazioni
<persistence:managed-hibernate-session name="session" hibernate-session-factory="#{sessionFactory}" auto-create="true"/>
TransactionManagement Impostazioni
<!--It takes care of calling begin and commit in the underlying Transaction API-->
<!--Here a Hibernate Transaction API-->
<tx:hibernate-transaction session="#{session}"/>
Per iniettare il Hibernate Session è possibile utilizzare
/**
* Seam lookup Seam enabled components Through its referenced name - session
*/
private @In Session session;
tenere a mente Seam funziona con qualsiasi framework MVC anche se usa Java Server Faces per impostazione predefinita. È possibile creare anche la propria capacità di MVC se si desidera. Date un'occhiata a JBoss Seam Tuto
Altri suggerimenti
Il Seam sito è un buon posto per iniziare. C'è un sacco di documentazione sul quadro.
Dalla FAQ:
Devo usare EJB 3 per l'uso Seam?
In primo luogo, è importante capire che i fagioli EJB 3 comprende sessione, messaggio di fagioli guidato, e la Java Persistenza API. Dedicato a tutti Seam tre tipi di componenti, che li rende più facile da usare e fornendo preziose miglioramenti. Ma Seam ha parallelo sostenere per la programmazione non EJB modello, in particolare JavaBeans e Hibernate nativo. Quindi la scelta di Cosa usare dipende da voi. Seam di forza più grande è che fornisce un'architettura unificata attraverso sia la modelli EJB e non EJB. Questo significa una volta che si impara a utilizzare uno, automaticamente sapere come utilizzare il altro.
Un altro modo di ottenere la sessione Hibernate è quello di utilizzare il metodo delegato l'EntityManager:
Session session = (Session)entityManager.getDelegate();