Spring 使用Hibernate事务管理:update等操作无效果问题

本文探讨了在Spring中使用Hibernate进行事务管理时遇到的update等操作无效果问题。介绍了事务传播行为如REQUIRED、REQUIRES_NEW等,并展示了如何在Spring配置文件中设置事务管理,包括不同的方法名匹配规则和事务属性,如只读事务、回滚规则等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*''handle*''on*Event'等等。

|

| propagation | 不 | REQUIRED | 事务传播行为

REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 。这是最常见的选择。

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

|

| isolation | 不 | DEFAULT | 事务隔离级别 |

| timeout | 不 | -1 | 事务超时的时间(以秒为单位) |

| read-only | 不 | false | 事务是否只读? |

| rollback-for | 不 |   |

将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'

|

| no-rollback-for | 不 |   |

被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException

|

实例:(详细列举了各类配置方式)


在spring配置文件中添加如下代码

<bean id=“transactionManager”

class=“org.springframework.orm.hibernate4.HibernateTransactionManager”>

<tx:advice id=“txAdvice” transaction-manager=“transactionManager”>

tx:attributes

<tx:method name=“insert*” propagation=“REQUIRED” />

<tx:method name=“update*” propagation=“REQUIRED” />

<tx:method name=“edit*” propagation=“REQUIRED” />

<tx:method name=“save*” propagation=“REQUIRED” />

<tx:method name=“add*” propagation=“REQUIRED” />

<tx:method name=“new*” propagation=“REQUIRED” />

<tx:method name=“set*” propagation=“REQUIRED” />

<tx:method name=“remove*” propagation=“REQUIRED” />

<tx:method name=“delete*” propagation=“REQUIRED” />

<tx:method name=“change*” propagation=“REQUIRED” />

<tx:method name=“get*” propagation=“REQUIRED” read-only=“true” />

<tx:method name=“find*” propagation=“REQUIRED” />

<tx:method name=“load*” propagation=“REQUIRED” read-only=“true” />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值