关于Spring 的事务

首先了解什么事事务,和一些基本概念。
什么是事务: 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

事务的四大特性

事务的特性-ACID:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)

事务的特性-原子性:
事务中的操作,要么全做成,要么都不做
事务是不可拆分的
事务必须以 Commit/Rollback 结束

事务的特性-一致性:
单独运行的事务,必须保证保持数据库的一致状态
从一个一致状态迁移到另一个一致状态
与原子性相关

事务的特性-隔离性:
多个并发事务之间不能相互干扰
并发不影响事务的执行

事务的特性-持久性:
一旦事务成功完成(Commit),它对数据库的更新应该是持久的
即使在写入磁盘之前,系统发生故障
在下次启动之后,也应保障数据更新的有效

所以在我们的程序中,对于多次操作数据库的地方加入事务是很有必要的。那么怎么在spring3中加入事务呢?有了注解一切都很简单,首先在spring的配置文件中加入以下代码

<!-- 事务控制器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionM-anager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<!-- surrpot proxool shutdown -->
<bean id="dataSourceFacade" class="org.logicalcobwebs.proxool.ProxoolFacade"
destroy-method="shutdown" />

<!-- 实现基于注解的事务管理 -->
<tx:annotation-driven transaction-manager="txManager" />

在service使用的时候只需要在该类或该接口实现类得某个方法上加上@Transactional即完成了对事务的管理,如果注释的是接口,则该接口的所有实现类都将被事务化。


使用注解事务注意事项:
1. 在service层不要对异常进行拦截,要对异常进行抛出!
2. 注解事务只能对public的方法可用,其它方法加入了无效,也可以把注解加在class上面这样当前类的所有公共方法都添加了事务功能
3. 在接口中添加了注解事务它的所有实现接口都将具有事务特性.建议不要加将注解加在接口上
4. 默认情况下,一个有事务方法, 遇到RuntiomeException 时会回滚 . 遇到 受检查的异常 是不会回滚 的. 要想所有异常都回滚,要加上 @Transactional( rollbackFor={Exception.class,其它异常})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值