Подтвердить что ты не робот

Когда совершает @TransactionAttribute (TransactionAttributeType.REQUIRES_NEW)?

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

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

Когда транзакция Bob совершает?:

a) при завершении Bob

b), когда вызов Aby завершается

c) прочее. когда?

4b9b3361

Ответ 1

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

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

Смотрите эту замечательную статью для дальнейшего объяснения.

Ответ 2

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

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

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

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