前提:spring管理hibernate事务操作。
如果一个大的事务操作中有几个小的操作,我想使某一个小操作用一个单独的事务,除了用transationTemplate外,有没有其他的好方法?????。
例如:
methodA(){
methodB();
methodC();
}
现在methodA配置了required,或者required_new,那么 methodB(); methodC();应该在一个事物中运行,现在我要让 methodC()在单独一个事务中运行。现在我使用的方法有如下:
一:硬编码重新启动一个事物
methodC{
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setReadOnly(false);
TransactionStatus status = transactionManager.getTransaction(def);
try{
errCode = doSometing();
}catch (Exception e) {
logger.error(e);
}
transactionManager.commit(status);
}
二:使用spring的TransactionTemplate
methodC{
TransactionTemplate t = new TransactionTemplate();
t.setReadOnly(false);
t.setTransactionManager(transactionManager);
t.setTransactionManager(transactionManager);
t.execute(new TransactionCallback() {
@Override
public Object doInTransaction(TransactionStatus status) {
return dosomething();;
}
});
}
但发现这两种方法低吗看着都不是很优雅,各位不知道还有什么好的方法??