public class BusinessService { //spring bean
public dumpAllData(List){
/* Complicated DB operation here
* We dont want to be in transaction now (because of performance issues)
*/
for(...){ //iterating through whole list
**updateItem(item);**
}
}
public updateItem(Entity e){
//saves entity into DB
//we want to be in transaction now
}
}
Конфигурация пружины:
<tx:advice id="txAdvice" transaction-manager="wsTransactionManager">
<tx:attributes>
<tx:method name="dumpAllData" propagation="NOT_SUPPORTED" />
<tx:method name="updateItem" propagation="REQUIRES_NEW" />
</tx:attributes>
</tx:advice>
Возможно ли иметь вложенное распространение REQUIRED_NEW, которое будет вызываться из метода с распространением NOT_SUPPORTED?
Дело в том, что мы выполняем обширную операцию с БД (~ 100 МБ) в dumpAllData (), поэтому мы не хотим участвовать в транзакции (в противном случае это было бы проблемой производительности). Но мы хотим быть в транзакции (откат / принятие) в методе updateItem (где мы делаем простое обновление сущностей).