Когда @TransactionAttribute (TransactionAttributeType.Требуется новое) commit?

метод EJB с именем Aby вызывает другой метод EJB с именем Bob

Bob помечен @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

когда bob транзакции?:

a) если bob вызов заканчивается

b) когда aby вызов заканчивается

c) другие. когда?

2 ответов


Я думаю, что A прав. Когда вызывается метод Bob, он создает для него новую транзакцию, а метод Aby приостанавливается до фиксации транзакции Bob.

также обратите внимание, что это должен быть метод из другого компонента, чтобы сделать его транзакционным, методы, вызываемые из того же компонента, не действуют как бизнес-методы.

Это статьи для дальнейшего объяснения.


на самом деле, я думаю, что вариант правильный. См.:

EJB 3.0 - вложенная транзакция != Требуется Новое?

Я также провел некоторые исследования и заглянул в журналы db (Hyper Sonic), чтобы увидеть, когда он фиксируется в БД, и он фиксируется, когда метод REQUIRES_NEW завершен. Но поскольку это зависит от контейнера для обработки транзакций, возможно, он может измениться в зависимости от контейнера. Я использовал JBoss при отладке этого. И Hibernate (стоит упомянуть, так как я проверил это, проверив журналы db). Я предполагаю, что запись базы данных задействована, так как вы спрашиваете о транзакциях.

мои мысли отличаются от предыдущего ответа, поэтому было бы интересно быть убежденным.