Как вы знаете, управление транзакциями - это сквозная проблема. Поэтому не очень хорошо, что ваш код разбросаны по модулю, где эти проблемы не являются их основной задачей.
Если вы используете JTA UserTransaction в среде, отличной от EJB, то JTA доступен (Apache Tomcat не поддерживает JTA).
1 ° правило
управление Швом транзакций включено по умолчанию для всех запросов JSF (пласты 2.0+).
Я думаю, что управление сделки Шва звучит лучше, как Транзакции, управляемые Seam. Это означает, что Шейм берет на себя заботы, за кулисами, призывать начать и совершить. Шов играет роль менеджера транзакций с помощью диспетчера транзакций Шва
1 ° Сценарий: POJO + JTA имеющаяся (Apache Tomcat не поддерживает JTA) Менеджер
транзакций, используемые пласты: org.jboss.seam .transaction.UTtransaction
включена по умолчанию в не EJB среде (войны), когда JTA доступны (JBoss поддержка JTA)
Если вы используете JPA EntityManager или Hibernate Session, вы должны зарегистрировать их позволяет управлять Шов границы транзакций
См 9.3. Seam-managed persistence contexts как настроить Шов удался контекст сохранения (вводимый с помощью @in)
Затем впрыскивают EntityManager (EntityManager) или сессии (спящий режим) с помощью @in (контекстного к ScopeType.РАЗГОВОРА)
@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
}
}
За кулисами Шов Менеджер транзакций Завербуйте EntityManager (JPA) или сессии (спящий режим) в активном JTA UserTransaction, путем вызова joinTransaction метод
2 ° сценарий: POJO + RESOURCE_LOCAL (либо Hibernate или JPA) Transaction
Менеджер транзакций используется Шов (JPA): org.jboss.seam.transaction.EntityTransaction
Transa фикция менеджер используется Seam (Hibernate): org.jboss.seam.transaction.HibernateTransaction
См 9.3. Seam-managed persistence contexts как настроить Шов удался контекст сохранения (вводимый с помощью @in)
За кулисы, Seam сделка Менеджер заботится о вызове начать и совершить в базовой технологии с использованием прокси
3 ° сценарных: EJB
Менеджер транзакций используются пласты: org.jboss.seam.transaction.CMTTransaction
Включено по умолчанию в среде EJB. Будьте осторожны, в этом случае Seam не контролирует транзакции, управляемые контейнером.
С уважением,
дать полное имя @Transactional – Bozho
org.jboss.seam.annotations.Transactional – Damo