Я только что прочитал главу (10) транзакций «Освоение EJB 3.0», и теперь я смущен о вложенных транзакциях.EJB 3.0 - Вложенная транзакция! = Требуется Новое?
Книга говорит
«EJB-определенный менеджер транзакций не поддерживает вложенные транзакции, он требует поддержки только плоских транзакций.» (Сайт 278, примечание)
Этот факт описан не только в этой книге, я нашел это заявление в других книгах/веб-сайтах.
Но если я называю «Требуется новый» аннотированный метод из a, допустим, «Требуемый» аннотированный метод, то, что у меня есть вложенная транзакция, не так ли? Я могу откатить внутреннюю транзакцию или зафиксировать ее, не затрагивая внешнюю транзакцию. И если я хочу, чтобы внешняя транзакция была прервана, я отбрасываю исключение EJBException, и вся транзакция будет отменена.
Так оно и есть: не требуется по спецификации EJB 3.0 или я что-то не понял? Я просто не могу получить разницу между вложенными транзакциями и описанным поведением.
С уважением Norman
«Внутренний» и «внешний» подразумевает, что если мы _commit_ внутренний, а затем _rollback_ внешний, то внутренняя часть как-то откатывается назад, даже если она уже была выполнена, но EJB не поддерживает это поведение: все транзакции совершены и откатываются независимо друг от друга. – DavidS