免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2308 | 回复: 1
打印 上一主题 下一主题

关于spring的事务划分问题,工作中,急呀。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-22 20:52 |只看该作者 |倒序浏览
spring的部分配置文件内容
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource"><ref local="dataSource"/></property>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                <property name="sessionFactory"><ref local="sessionFactory"/></property>
<bean id="txProxyTemplate" abstract="true"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                                <prop key="save*">PROPAGATION_REQUIRED</prop>
                                <prop key="delete*">PROPAGATION_REQUIRES_NEW</prop>
有些代码省略。。。。。。

问题:
public V save*(V v) throws Exception {
                delete*("d9802217-0113-1000-e000-0001c0a8");//可以根据一个ID号删除相关的对象
                System.out.println("抛出异常");
                System.out.println(1/0);
                return *DAO.save*(v);
        }
1:PROPAGATION_REQUIRES_NEW这个事务级别不执行(假设有一个delete方法放在save方法里面执行,并且在执行了delete方法之后,才抛出异常,save方法事务回滚,但是delete方法按照事务定义,delete方法应该不会回滚。但是事实上delete方法也跟着回滚了。)原因是什么?
2:我用的是tomcat容器。有些网友上对于问题1的解释是PROPAGATION_REQUIRES_NEW是必须在具有跨资源(假如两个数据库)的全部JTA事务管理器(例如weblogic就有一个JTA,tomcat不行)去管理,这种事务级别才能生效。因为PROPAGATION_REQUIRES_NEW是促使事务挂起,tomcat没有全局的事务管理器。而且配置文件也应该声明将局部的事务管理器(HibernateTransactionManager)声明为全局的事务管理器(JtaTransactionManager)
,不知道网友这样解释,对吗??
3:对于以上问题,请大家给个解决的方法或思路。工作中,急。。。。。。。。

[ 本帖最后由 yeshenghai 于 2007-7-22 20:53 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-07-23 16:48 |只看该作者
<props>
        <prop key="save*">PROPAGATION_REQUIRED</prop>
        <prop key="update*">PROPAGATION_REQUIRED</prop>
        <prop key="del*">PROPAGATION_REQUIRED</prop>
        <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
        <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
        <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
      </props>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP