Spring事务管理简介

什么是事务

事务是正确执行一系列的操作(或动作),使得数据库从一种装填转换成另一种状态,且保证操作全部成功,或者全部失效。

事务原则是什么

事务必须俯冲ISO/IEC所制定的ACID原则

ACID原则的具体内容如下:

原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不执行。

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

隔离性(Isolation):在事务正确提交之前,它可能的结果不应显示给任何其他事务。

持久性(Durability):事务正确提交后,其结果将永久保存在数据库中。

Java事务

Java事务的产生

程序操作数据库的需要,以java编写的程序或系统,实现ACID的操作。

Java事务实现

通过JDBC相应方法间接来实现对数据库的增、删、改、查,吧事务转移到Java程序代码中进行控制

确保事务要么全部执行成功,要么撤销不执行。

[v_notice]总结:java事务机制和原理就是操作确保数据库操作的ACID特性。[/v_notice]

Java事务实现模式

Java事务的实现

通过Java代码来实现对数据库的事务性操作。

Java事务类型

JDBC事务:用Connection对象控制的手动模式和自动模式

JTA(Java Transacation API)事务:与实现无关,与协议无关的API

容器事务:应用服务器提供的,且大多是基于JTA完成(通常基于JNDI的,相当复杂的API实现)

三种事务的差异

JDBC事务:控制的局限性在一个数据库连接内,但是其使用简单。

JTA事务:功能强大,课跨越多个数据库或多DAO,使用比较复杂。

容器事务:主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。

Spring事务核心接口

Spring事务管理简介

Spring事务管理器

JDBC事务管理器(DataSource Transaction Manager)

本事务管理器通过调用java.sql.Connection来管理事务

Hibernate事务管理器(Hibernate Transaction Manager)

本管理器将事务管理的职责委托给org.hibernate.Transaction对象来管理事务,而后者是从Hibernate Session中取到的。

JPA事务管理器(Jpa Transaction Manager)

通过一个JPA实体管理工厂,(javax.persistence.EntityManagerFactory接口的任意实现)将与由工厂所产生的JPA EntityManager合作来构建事务。

JTA事务管理器(Jta Transaction Manager)

本管理器将事务管理的责任委托给javax.transaction.UserTransaction和javax.transaction.TransactionManager对象进行事务处理。

Spring事务属性

Spring事务管理简介

数据读取类型说明

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

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

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

事务隔离级别

隔离级别定义了一个事务可能受到其他并发事务影响的程度。

隔离级别分为:

Spring事务管理简介

事务传播行为

当事务方法被另一个事务方法调用时,必须指定事务应该如何传播

Spring的七种传播行为

Spring事务管理简介

事务是否只读

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

设置“只读”注意:事务的是否“只读”属性,不同的数据库厂商支持不同。

oracle的“readOnly”不起作用,不影响其增删改查

MySQL的“readOnly”为true,只能查,增删改则出异常

事务超时

事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束。

设计事务时注意:为了使应用程序很好的运行,事务不能运行太长的时间。因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源。

事务回滚

默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查异常时不会回滚。

自定义回滚策略:

– 声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚

– 声明事务遇到特定的异常不回滚,即使这些异常时运行期异常。

Spring事务状态

事务接口

– 通过事务管理器获取TransactionStatus实例

– 控制事务在回滚或提交的时候需要应用对应的事务状态

– Spring事务接口

Spring事务管理简介

本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » Spring事务管理简介
分享到:
赞(0)

评论抢沙发

评论前必须登录!