Re[2]: Управление транзакциями с помощью аннотаций
От: Аноним  
Дата: 17.02.12 11:14
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

А если разнести по разным классам данные методы тогда как решается?

Правильно понимаю о таком решении идет речь?

@Component
public class Outer {
     @Autowired
     private Inner inner;


     @Transactional
     public void do() {
         inner.do();
     }


}

@Component
public class Inner {
      @Transactionl(propagation = Propagation.REQUIRES_NEW)
      public void do() {
      }
}



B>Здравствуйте, Аноним, Вы писали:

B>
B>public void doOuter() {
B>                  doInInnerTransaction(); 
B>}

B>@Transactional
B>public void doInInnerTransaction() {
B>    // do some actions with db
B>}
B>

B>Проблема в том как работают эти аннотации. Spring создаёт прокси. И при вызове метода, обработчик прокси проверяет а не надо ли чего сделать с транзакцией.
B>В случае вызова метода того же класса. Как у вас. Вызов идёт мимо прокси. Поэтому всё что вы пишете в @Transactional для doInInnerTransaction — игнорируется.
B>Достаточно геморная задача.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.