zoukankan      html  css  js  c++  java
  • Spring的事务管理(理论篇,下篇提供代码实现)

    事务:逻辑上的一组操作,这组操作要么全部成功,要么全部失败(事务十大特性:原子性,一致性,隔离性,持久性)

    原子性:事务是不可分割的工作单位,事务中的操作要么都发生了,要么都不发生。(也就是说不能单独运行)

    事务的一致性:事务前后数据的完整性必须保持一致

    隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户事务所干扰,多个并发事务之间的数据要相互隔离

    事务的持久性:一个事务被提交,他对数据库的数据进行修改,即使数据库发生故障也不应该被影响

               Spring接口介绍----------事务管理

    Spring 事务管理搞层抽象的主要三个接口:

    PlatformTransactionManager:事务管理

    TransactionDefinition:事务定义信息(隔离性,传播性,超时,只读)

    TransactionStatus:事务具体运行状态

                PlatformTransactionManager的具体实现类

    Spring为了满足不同的持久层框架,提供了不同的PlatformTransactionManager接口实现:

    org.springframework.jdbc.datasource.DataSurceTransactionManager:使用Spring JDBC或者iBatis进行持久化数据时使用的

    org.springFramework.orm.hibernate3.HibernateTransactionManager:使用Hibernate3.0版本进行持久化数据时使用

    1.不考虑隔离性,会引发:脏读,不可重复读,幻读

    脏读:一个事务读取另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

    不可重复读:同一事物,多次读取同一数据返回的结果有所不同。

    幻读:一个事务读取了几行记录后,另一个事务藏入一些记录,幻读就发生了,再后来的查询红,第一个事务就会发现有些原来的

    没有的记录。

    TransactionDefinition:定义隔离级别

    数据中的四种隔离级别:

    DEFAULT :使用后端数据库磨人的隔离级别(Spring中的选项)

    READ_UNCOMMITED:允许你读取还未提交的改变了的数据,可导致脏,幻,不可重复

    READ_COMMITTED:允许在并发事务已经提交后读取。可防止脏读,但幻读何不可重复可能会发生

    REPEATABLE_READ:对相同字段的多次读取是一致的,除非数据事务本身改变,可防止脏,不可重复读,但幻读可能会发生

    SERIALIZABLE:完全服从ACID的隔离级别,确保不发生脏,幻,不可重读。这在所有的隔离级别中是最慢的,他是典型的锁在事务涉及的数据表来完成的.

                 事务中的传播行为

    PROPAGATION_REQUIRED:支持当前事务,如果不存在就建一个

    PROPAGATION_REQUIRES_NEW :如果有事务存在,挂起当前事务,创建一个新的事务

    PROPGATION_NESTED:如果当前事务存在,则嵌套事务执行    

                      Spring 事务管理的两种方式

    编程式的事务管理

    1.通过接口transactionTemplate手动管理事务(不推荐)

    使用XML配置声明的事务

    1.开发中推荐使用,通过Spring的声明式事务是通过AOP实现的(推荐)

    周永发
  • 相关阅读:
    javaapplicationWeb application setup on Ubuntu VPS
    内容中断随想录(risc cpu的那些事)
    算法线性编程珠玑读书笔记之----->使用线性算法求解连续子序列的最大和
    classnull100
    安装javaUbuntu下安装JDK1.6,并将之设为默认的JDK
    筛选实现C++实现筛选法
    调试设置移动端Web开发环境搭建实践
    路由器交换机[置顶] 路由器和交换机的综合实验⑵
    卡数字怀念的东西:魔方
    密码配置配置SSH免密码登陆
  • 原文地址:https://www.cnblogs.com/yvanBk/p/8435734.html
Copyright © 2011-2022 走看看