Spring的事务学习

1、事务的特征(ACID)

(1)原子性:不可分割性,操作要么全部执行,要么全部不执行。

(2)一致性:事务的执行使得数据库从一种正确的状态转换为另一种正确的状态。

(3)隔离性:一个事务的执行不能干扰其他事务。

(4)持久性:事务完成后,对数据的改变是永久性的,结果会永久的保存在数据库中。

Java事务产生的原因:程序操作sh数据可的需要,编程中,实现ACID的操作。

Java事务实现范围:通过JDBC间接实现对数据库的增删改查。

2、Java事务类型

JDBC事务:用Connection对象控制,包括手动模式和自动模式。局限在一个数据库连接内,使用简单。

JTA事务:与实现无关,与协议无关的API。可跨越多个数据库和多个DAO,使用复杂。

容器的事务:应用服务器提供,大多给予JTA完成,局限于EJB。

3、Spring事务核心接口:事务管理器、事务定义接口、事务状态接口。

4、事务定义接口:Spring事务属性范围:隔离规则、传播行为、回滚规则、事务超时、是否只读。

事务的读取类型:脏读、不可重复读、幻读。

      脏读:事务没提交,提取读取。

     不可重复读:两次读取到的数据不一致。

      幻读:事务不是独立执行时,发生的一种非预期现象。

(1)事务的隔离级别:一个事务可能受其他事务影响的程度。

 ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.。

 ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。       这种隔离级别会产生脏读,不可重复读和幻像读。 

 ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据

ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。       它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。

ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。       除了防止脏读,不可重复读外,还避免了幻像读。

(2)事务的传播行为:一个事务被另一个事务方法调用时,必须知道事务如何传播。

PROPAGATION_REQUIRED:如果存在一个事务,支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

PROPAGATION_SUPPORTS:如果存在一个事务,支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY:如果存在一个事务,支持当前事务,如果当前没有事务,就抛出异常。

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

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

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

PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行,如果当前没有说事务,则执行与PROPAGATION_REQUIRED类似的操作。

(3)事务是否只读:利用数据库的“只读”属性,进行特定优化处理。

(4)事务超时:特定时间内事务没有执行完毕,要进行回滚。

(5)事务回滚:遇到运行期异常时才会回滚。

5、事务状态:通过事务管理器获取事务状态,控制事务在回滚或提交时对应的zh状态。

6、spring事务实现的两种方式:编程式和声明式

(1)编程式事务实现方式

       事务管理器方式:核心类为spring事务管理的三个接口及JDBCTemplate类。

       模板事务的方式:主要工具为jdbcTemplate类。

(2)声明式事务管理

基于AOP的模式机制,通过对方法进行前后拦截。xml配置或注解方式实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值