spring 事务问题

原创
2011/03/07 11:16
阅读数 262

前提: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();;
}
});
}
但发现这两种方法低吗看着都不是很优雅,各位不知道还有什么好的方法??

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部