欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring事务控制简述

程序员文章站 2022-04-15 17:06:22
在Spring事务控制,我们需要明确三点 JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案 Spring框架为我们提供了一组事务控制的接口,这组接口在spring-tx-5.0.2.RELEASE.jar中 Spring事务控制都是基于AOP的,它 ......
  • 在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():设置事务回滚