Когда фиксируется @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)?

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

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

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

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

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

в) другое. когда?

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам