spring 事务问题

发布于 2021-11-08 12:05:41 字数 1614 浏览 762 评论 6

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

2021-11-14 19:37:46

http://www.javaeye.com/topic/40553

这个帖子 

翻到以前的资料

一人独醉 2021-11-14 15:15:43

应该跟事务配置的类型没有关系,关系在于代理。

  初步断定 这个问题没办法解决,只能硬编码。

秋意浓 2021-11-13 06:52:51

NESTED

NESTED表示如果一个活动的事务存在,业务逻辑方法则运行在一个嵌套的事务中;如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点,内部事务的回滚不会对外部事务造成影响,它只对DataSourceTransactionManager事务管理器生效

是不是这个啊,我也正在看spring 的事务。 

南冥有猫 2021-11-13 01:12:53

谢谢,这些东西底层我都看过了,解决不了此问题。

怎言笑 2021-11-12 22:51:50

没解决啊 赶紧的 给整整

彩扇题诗 2021-11-10 00:51:47

刚在JE看完这个,你又发这来了呵~~没解决呢还

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文