• Spring事物管理简介 (转)


    一、事物1、什么是事物

    事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败

    2、事物的特性

    原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生

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

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

    持久性:一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

    二、事物的API介绍

    Spring事物管理高层抽象主要包括3个接口:PlatformTransactionManager(事务管理器)、TransactionDefinition(事物定义信息)、TransactionStatus(事物具体运行状态)。

    1、PlatformTransactionManager

    Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现

    2、TransactionDefinition(1)定义隔离级别

    如果不考虑隔离性,会引发如下安全问题:脏读、不可重复读、幻读

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

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

    幻读:一个事物读取了几行记录后,另一个事物插入一些记录,幻读就发生了,在后来的查询中,第一个事物就会发现有些原来没有的记录。

    事物的隔离级别就是用来解决以上问题:

    Mysql数据库用的是REPEATABLE_READ隔离级别

    Oracle数据库用的是READ_COMMITTED隔离级别

    (2)定义事物传播行为

    三、实战

    Spring支持俩种方式事务管理

    --编程式的事务管理

    ◎在实际应用中很少使用

    ◎通过TransactionTemplate手动管理事物

    --使用XML配置声明式事物

    ◎开发中推荐使用(代码侵入性最小)

    ◎Spring的声明式事物是通过AOP实现的

    1、编程式事务管理

    手动编写代码进行事物管理(很少使用)

    (1)在AccountService中使用TransactionTemplate

    (2)TransactionTemplate依赖DataSourceTransactionManager

    (3)DataSourceTransactionManager依赖DataSource构造

    2、声明式事务管理

    (1)基于TransactionProxyFactoryBean的方式

    缺点:每需要对一个类进行事物管理,就需要配置一次,维护不方便

    (2)基于AspectJ的XML方式(经常使用)

    3、基于注解的方式(经常使用)

    在需要事物管理的类上面加上注解

  • 相关阅读:
    剑指Offer-Python(6-10)
    Python对MySQL进行增删查改
    剑指Offer-Python(1-5)
    转载:Python中collections模块
    读取单词文件并查某个单词出现的次数
    Python正则表达式-换行的匹配
    Python爬虫-换行的匹配
    转载:Pycharm的常用快捷键
    Python 正则表达式
    Python的类与对象
  • 原文地址:https://www.cnblogs.com/guanbin-529/p/11042717.html
Copyright © 2020-2023  润新知