Вы можете использовать TransactionTemplate
начать транзакцию вручную при условии блока кода/обратного вызова:
final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallback<String>()
{
@Override
public String doInTransaction(TransactionStatus status)
{
//...
return "Some result";
}
});
Или, если вам не нужен результат:
transactionTemplate.execute(new TransactionCallbackWithoutResult()
{
@Override
protected void doInTransactionWithoutResult(TransactionStatus status)
{
//...
}
});
Конечно, вы можете также определить TransactionTemplate
как фасоль весны и вводить ее непосредственно. В противном случае вы можете создать его каждый раз, когда вам это нужно, но тогда вам нужно впрыснуть менеджер транзакций:
@Resource
private PlatformTransactionManager transactionManager;
Что об использовании [ 'TransactionTemplate'] (http://static.springsource.org/spring/docs/current/ Javadoc-апи/орг/springframework/сделки/поддержки/TransactionTemplate.html)? Если вы заинтересованы, я разберу его в ответ и предоставлю несколько подробностей. –
@ TomaszNurkiewicz, TransactionTemplate помог мне решить мою проблему. –