spring 事务问题
前提: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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
http://www.javaeye.com/topic/40553
这个帖子
翻到以前的资料
应该跟事务配置的类型没有关系,关系在于代理。
初步断定 这个问题没办法解决,只能硬编码。
NESTED
NESTED表示如果一个活动的事务存在,业务逻辑方法则运行在一个嵌套的事务中;如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点,内部事务的回滚不会对外部事务造成影响,它只对DataSourceTransactionManager事务管理器生效
是不是这个啊,我也正在看spring 的事务。
谢谢,这些东西底层我都看过了,解决不了此问题。
没解决啊 赶紧的 给整整
刚在JE看完这个,你又发这来了呵~~没解决呢还