Spring事务回顾
Spring事务回顾
喂码呢 发表于5个月前
Spring事务回顾
  • 发表于 5个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Spring事务回顾

Spring 事务

————————————————————————————————————

事务的作用-ACID

将若干个数据库操作作为一个整体操作,要么全部成功要么全部失败

原子性:事务是一个不可分割的单位,要么发生,要么不发生

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

隔离性:多个并发事务之间要保持隔离

持久性:一个事务一旦被提交,它对数据库中数据的改变是永久的

 

Spring事务管理高层抽象的3个主要接口

PlatformTransactionManager

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

如:

        使用Spring JDBC或iBatis进行持久化数据时使用DataSourceTransactionManager

        使用Hibernate3.0版本进行持久化数据时使用HibernateTransactionManager

 

TransactionDefinition

事务定义(属性)信息,包括:隔离级别、事务传播特性、超时、只读

事务隔离级别:

  • TransactionDefinition.ISOLATION_DEFAULT
  • TransactionDefinition.ISOLATION_READ_COMMITTED
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED
  • TransactionDefinition.ISOLATION_REPEATABLE_READ
  • TransactionDefinition.ISOLATION_SERIALIZABLE

 

事务的传播特性:

  • TransactionDefinition.PROPAGATION_MANDATORY
  • TransactionDefinition.PROPAGATION_NESTED
  • TransactionDefinition.PROPAGATION_REQUIRED
  • TransactionDefinition.PROPAGATION_NEVER
  • TransactionDefinition.PROPAGATION_NOT_SUPPORTED
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW
  • TransactionDefinition.PROPAGATION_SUPPORTS

 

超时

  • TransactionDefinition.TIMEOUT_DEFAULT

 

只读

 

TransactionStatus

事务的运行状态

 

 

 

 

声明式事务

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

 

配置方式:

  • 基于<tx>和<aop>名称空间的XML配置
  • 使用TransactionProxyFactoryBean生成事务代理对象
  • 基于@Transactional注解

 

 

@Transactional注解

该注解可以用于类、接口和方法,当该注解用于类上时该类上的所有public方法都有@Transactional注解所指定的事务属性,同时我们也可以在方法使用@Transactional去覆盖类上的@Transactional

要使得@Transactional注解生效必须配置:

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

 

编程式事务

使用TransactionTemplate将多个数据库操作封装成事务

共有 人打赏支持
粉丝 6
博文 10
码字总数 5132
×
喂码呢
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: