Когда @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). Я предполагаю, что запись базы данных задействована, так как вы спрашиваете о транзакциях.
мои мысли отличаются от предыдущего ответа, поэтому было бы интересно быть убежденным.