美文网首页
01.Spring事务

01.Spring事务

作者: Explorer_Mi | 来源:发表于2018-02-14 08:28 被阅读0次

    1.事务的概念

    事务值得是逻辑上的一组操作,这组操作要么全部成功,要么全部失败.

    2.具体实例

    1.场景-银行转账

    一个转账过程
    如果A给B转账期间,银行系统发生故障,就要保证A,B两者的财产不能出现任何损失.
    所以转账的操作就要添加到事务中进行,必须一起成功,或者一起失败.
    
    具体点就是,要么A给B成功转账,A少了3000元,B多了3000元,要么A没有给B转账成功,A没少一分钱,B没多一分钱.
    

    2.事务的特性

    总的来讲分为4类特性

    原子性
    一致性
    隔离性
    持久性
    

    1.原子性

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

    具体就是上面的例子.

    2.一致性

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

    实例:就是说A和B转账操作完成之前和之后,A,B两者的存款之和,没有任何变化.

    3.隔离性

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

    实例:


    A正在被一个事务进行更新操作,另外一个事务也进行对A对象的更新操作,这样就导致第一个事务对A的修改,被第二个事务对A的修改给覆盖,修改记录被覆盖掉了,为了避免这种情况,所以事务执行期间,必须要有隔离性.

    4.持久性

    持久性是指一个事务一旦被提交,他对数据库中的修改就是永久性的,即使数据库发生故障也不对其出现任何影响.

    3.Spring中的事务管理

    Spring事务管理主要有三个接口

    1. platfromTransactionManager
    2. TransactionDefinition
    3. TransactionStatus
    

    1.platfromTransactionManager

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


    2.TransactionDefinition

    事务定义信息(隔离级别,传播,超时,只读)

    可预见的安全性问题包括:脏读,幻读,不可重复读

    1.脏读
    一个事务读取了另外一个事务改写但没有提交的数据,如果这些数据被回滚,则读到的数据是无效的.
    
    2.不可重复读
    在同一事务中,多次读取同一数据返回的结果有所不同.
    
    3.幻读
    一个事物读取了几行记录之后,另一个事务插入一些记录,幻读就会产生.
    
    再后来的查询中,第一个事务就会发现有些原来没有的记录,
    

    隔离级别:读未提交,读已提交,可重复读,可串行化.

    1.隔离级别的划分(安全等级升序)

    2.事务的传播行为

    主要用来解决服务器端的SERVICE&&DAO的一些问题.

    图示:

    相关文章

      网友评论

          本文标题:01.Spring事务

          本文链接:https://www.haomeiwen.com/subject/fpistftx.html