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

È stato utile?

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top