前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hibernate3事务不起作用

hibernate3事务不起作用

作者头像
小柒2012
发布2018-04-13 16:13:13
1.5K0
发布2018-04-13 16:13:13
举报
文章被收录于专栏:IT笔记IT笔记

如果没有如果,也许永远都发现不了这个问题,除非数据出现问题没有回滚。

由于一同事测试事务问题,发现数据不对,事务没有回滚。项目采用shiro+struts2+spring+hibernate,事务配置采用声明式事务。

用于在struts2的action层 aop注解权限,所用使用了cglib动态代理,如下:

代码语言:javascript
复制
<aop:aspectj-autoproxy proxy-target-class="true"/>

cglib的动态代理是基于任意类的,而JDK的动态代理是必须要实现接口的。而我们系统中service都是基于接口实现的。 事务配置如下:

代码语言:javascript
复制
<aop:config>
        <aop:pointcut id="allServiceMethod" expression="execution(* com.acts.web.*.service.*.*(..))" />
        <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
    </aop:config>

表达式说明: 在service包中定义的任意方法的执行:

代码语言:javascript
复制
execution(* com.acts.web.*.service.*.*(..))

在service包或其子包中定义的任意方法的执行:

代码语言:javascript
复制
execution(* com.acts.web.*.service..*.*(..))

如果使用JDK代理,第一种实现完全没有问题,但是如果改为cglib就会导致事务无法切入。 所以改为一下:

代码语言:javascript
复制
<aop:config>
        <aop:pointcut id="allServiceMethod" expression="execution(* com.acts.web.*.service..*.*(..))" />
        <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
    </aop:config>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档