zoukankan      html  css  js  c++  java
  • Spring事务控制简述

    • 在Spring事务控制,我们需要明确三点

      • JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案

      • Spring框架为我们提供了一组事务控制的接口,这组接口在spring-tx-5.0.2.RELEASE.jar中

      • Spring事务控制都是基于AOP的,它既可以使用编程的方式实现,也可以使用配置的方式实现

    • Spring事务控制的API介绍

      • PlatformTransactionManager:此接口是Spring的事务管理器,提供了3个方法

        • TransactionStatus getTransaction(TransactionDefinition definition):获取事务状态信息

        • void commit(TransactionStatus status):提交事务

        • void rollback(TransactionStatus status):回滚事务

        • 注意事项:在开发过程中,用的都是它的实现类

          • org.springframework.jdbc.datasource.DataSourceTransactionManager:在Spring JDBC或者ibatis进行持久化数据时使用

          • org.springframework.orm.hibernate5.HibernateTransactionManager:在Hibernate版本进行持久化数据时使用

        • TransactionDefinition:它是事务的定义信息对象

          • String getName():获取事务对象名称

          • int getIsolationLevel():获取事务隔离级别

            • 事务的隔离级别:是反映事务提交并发访问时的处理态度

              • ISOLATION_DEFAULT:默认级别,下列的某一种

              • ISOLATION_READ_UNCOMMITTED:可以读取未提交数据

              • ISOLATION_READ_COMMITTED:只能读取已提交数据,解决脏读问题(Oracle的默认级别)

              • ISOLATION_REPEATABLE_READ:是否读取其他事务提交修改后的数据,解决不能重复读的问题(MySQL的默认级别)

              • ISOLATION_SERIALIZABLE:是否读取事务提交添加后的数据,解决幻影读问题

          • int getPropagationBehavior():获取事务传播行为

            • 事务的传播行为

              • REQUIRED:如果当前没有事务,就创建一个事务,有就添加到事务中。适用于增删改

              • SUPPORTS:如果有事务,就使用事务,没有也没事,适用于查

              • MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常

              • REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起

              • NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

              • NEVER: 以非事务方式运行,如果当前存在事务,抛出异常

              • NESTED:如果当前存在事务,则在做套事务内执行。如果当前没有事务,则执行REQUIRED类似的操作

          • int getTimeout():获取事务超时时间,默认值是-1,没有超时限制,如果设置超时时间,就以秒计算

          • boolean isReadOnly():获取事务是否只读,建议查询使用只读

        • TransactionStatus:此接口提供的是事务具体的运行状态

          • void flush():刷新事务

          • boolean hasSavepoint():获取事务是否存在存储点

          • boolean isCompleted():获取事务是否完成

          • boolean isNewTransaction():获取事务是否为新的事务

          • boolean isRollbackOnly():获取事务是否回滚

          • void setRollbackOnly():设置事务回滚

  • 相关阅读:
    转】Apache解决高并发和高可用
    Kafka学习(一)配置及简单命令使用
    unity3d教程动态创建简单平面地形
    LeetCode: Unique Binary Search Trees [095]
    德惠也有星巴克
    一个css和js结合的下拉菜单,支持主流浏览器
    【图像处理】人类视觉成像原理
    windows使用nginx+memcached实现负载均衡和session或者缓存共享
    OpenCV基础篇之画图及RNG随机数对象
    在阿里云上布置git server
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/12721069.html
Copyright © 2011-2022 走看看