Ayúdame a entender SEAM e Hibernate?
-
27-09-2019 - |
Pregunta
Quiero utilizar Marco de SEAM con Hibernate, pero no quieren usar EJB. No puedo usar EJB.
La primera pregunta es, puedo usar EntityManager? o es parte de un EntityManager EJB?
¿Cómo puedo obtener acceso al uso de Hibernate en mi componente SEAM?
Gracias, Felipe
Solución
Con costura, puede utilizar cualquiera de Hibernate o JPA (EntityManager). Funciona independientemente de EJB. Puede utilizar POJO normal si lo desea.
¿Cómo puedo obtener acceso al uso de Hibernate en mi componente SEAM?
Aquí va la configuración de Hibernate WEB-INF / components.xml
SessionFactory configuración
<persistence:hibernate-session-factory name="sessionFactory" cfg-resource-name="app.cfg.xml"/>
Cuando app.cfg.xml se coloca en el raíz de la ruta de clase
Sesión configuración
<persistence:managed-hibernate-session name="session" hibernate-session-factory="#{sessionFactory}" auto-create="true"/>
TransactionManagement configuración
<!--It takes care of calling begin and commit in the underlying Transaction API-->
<!--Here a Hibernate Transaction API-->
<tx:hibernate-transaction session="#{session}"/>
Para inyectar su Session de Hibernate puede utilizar
/**
* Seam lookup Seam enabled components Through its referenced name - session
*/
private @In Session session;
Tenga en cuenta la costura funciona con cualquier framework MVC pesar de que utiliza Java Server Faces por defecto. Puede crear incluso sus propias capacidades MVC si lo desea. Echar un vistazo a JBoss Seam Tuto
Otros consejos
El costura página web es un lugar bueno para comenzar. Hay una gran cantidad de documentación sobre el marco.
Desde el FAQ:
¿Tengo que usar EJB 3 para su uso Costura?
En primer lugar, es importante entender que los granos de EJB 3 de sesión engloba, Los mensajes de beans, y el de Java API de persistencia. abastece a todos costura tres tipos de componentes, haciéndolos más fácil de usar y proporciona valiosa mejoras. Pero Seam tiene paralelo apoyo para la programación no EJB modelo, más notablemente JavaBeans y Hibernate nativa. Por lo que la elección de lo que a su uso depende de usted. costura de mayor fortaleza es que proporciona una arquitectura unificada tanto la EJB EJB y no modelos. Eso significa una vez que aprender a usar uno, automáticamente saber cómo utilizar el otra.
Otra manera de conseguir la sesión de Hibernate es utilizar el método delegado de EntityManager:
Session session = (Session)entityManager.getDelegate();