• 暂时停更一段时间!
  • 近期网站将陆续进行前端页面改造!
  • 招募网站编辑,联系站长!

Spring事务管理简介

文章目录[隐藏]

什么是事务

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

事务原则是什么

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

ACID 原则的具体内容如下:

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

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

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

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

Java 事务

Java 事务的产生

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

Java 事务实现

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

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

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

Java 事务实现模式

Java 事务的实现

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

Java 事务类型

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

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

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

三种事务的差异

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

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

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

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的七种传播行为

事务是否只读

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

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

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

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

事务超时

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

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

事务回滚

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

自定义回滚策略:

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

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

Spring 事务状态

事务接口

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

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

Spring事务接口


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Spring 事务管理简介
喜欢 (0)
[247507792@qq.com]
分享 (0)

邀请您免费 注册账号 登录 即可参与讨论!