Spring事务管理

来源:互联网 发布:电信4g卡显示3g网络 编辑:程序博客网 时间:2024/05/20 23:59

一、数据库事务隔离级别

数据库事务数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列(通常包括读/写操作)构成。

数据库事务拥有以下四个特性,习惯上被称之为ACID特性

  • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
  • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

事务隔离级别(transaction isolation levels):隔离级别就是对对事务并发控制的等级。分为串行化(SERIALIZABLE)、可重复读(REPEATABLE READ)、读已提交(READ COMMITED)、读未提交(READ UNCOMMITED)四个等级。为了实现隔离级别数据库通常采用锁(Lock),在编程的时候只需要设置事务隔离等级,至于具体采用什么锁则由具体数据库来实现。

串行化(SERIALIZABLE):

可重复读(REPEATABLE READ):

读已提交(READ COMMITED):

读未提交(READ UNCOMMITED):


二、Spring事务管理的方式


Spring事务管理方式分为编程式事务和声明式事务。它对不同的ORM框架实现了不同的事务管理器,代理方式也可以灵活定制,如下图:



以JDBC为例看一下编程式事务和声明式事务(XML配置)分别是怎么实现的。
1、编程式事务
2、声明式事务

编程式事务管理与业务代码耦合度太高,故一般选择声明式事务配置方式实现事务管理。

三、Spring事务传播行为



0 0