Como saben, Transaction Management es una preocupación transversal. Por lo tanto, no es una buena idea que su código esté diseminado en módulos donde esas preocupaciones no son su principal preocupación.
Si está utilizando una UserTransaction JTA en un entorno que no es EJB, entonces JTA está disponible (Apache Tomcat no es compatible con JTA).
1 ° regla
gestión de transacciones costura está activada por defecto para todas las peticiones JSF (Seam 2.0+).
creo que la gestión de transacciones costura suena mejor como transacciones gestionadas por la costura. Significa que Seam se preocupa, detrás de las escenas, de llamar a comenzar y comprometerse. Costura juega el papel de gestor de transacciones mediante el uso de un gestor de costura Transacción
1 ° escenario: POJO + JTA disponible (Apache Tomcat no es compatible con JTA) Gestor
Transacción utilizado por la costura: org.jboss.seam .transaction.UTtransaction
activado por defecto en entorno no EJB (guerra) cuando JTA disponible (JBoss soporte JTA)
Si está utilizando JPA EntityManager o sesión de Hibernate, es necesario registrarse a la costura permite gestionar límites de transacción
Ver 9.3. Seam-managed persistence contexts cómo configurar una costura logró contexto de persistencia (inyectado mediante el uso de @In)
Entonces inyectar un EntityManager (EntityManager) o Sesión (Hibernate) mediante el uso de @In (con ámbito de ScopeType.CONVERSACIÓN)
@Name("businessService")
public class BusinessServiceImpl implementes BusinessService {
@In
private EntityManager entityManager;
public void doSomething() {
// You do not need to call entityManager().getTransaction().begin();
// because Seam Transaction Manager takes care of it
// By using proxies
// Therefore, if you call entityManager().getTransaction().begin()
// You will get IllegalStateException
// Some EntityManager operations persist, find etc
// You do not need to call entityManager().getTransaction().commit();
// because Seam Transaction Manager takes care of it
// By using proxies
}
}
Detrás de las escenas, la costura Administrador de transacciones de contar con la EntityManager (APP) o Sesión (Hibernate) en el activo JTA UserTransaction, llamando joinTransaction método
2 ° escenario: POJO + RESOURCE_LOCAL (Cualquiera de Hibernate o JPA) Transacción
administrador de transacciones utilizado por la costura (APP): org.jboss.seam.transaction.EntityTransaction
Transa Gestor cción utilizado por la costura (Hibernate): org.jboss.seam.transaction.HibernateTransaction
Ver 9.3. Seam-managed persistence contexts cómo configurar una costura logró contexto de persistencia (inyectado mediante el uso de @In)
Detrás de las escenas, la costura de transacción gerente se encarga de llamar a comenzar y comprometerse en la tecnología subyacente mediante el uso de proxies
3 ° escenarios: EJB
administrador de transacciones utilizado por la costura: org.jboss.seam.transaction.CMTTransaction
Habilitado de forma predeterminada en el entorno EJB. Tenga cuidado, en ese caso, Seam no controla las transacciones gestionadas por contenedores.
respecto,
dan el nombre completo de @Transactional – Bozho
org.jboss.seam.annotations.Transactional – Damo