一文让你搞懂Spring的统一事务模型
Spring事务的知识体系 进入主题之前,先来了解一下Spring事务,都有哪些内容: Spring事务包含对 分布式事务 和 单机事务 的支持,我们用的比较多的是单机事务,也就是只操作一个数据库的事务。 单机事务,按照用法分,又可以分为 编程式事务模型 (TransactionTemplate)和 声明式事务模型 (@Transactional注解),后者可以理解为 aop + 编程式事务模型。 编程式事务模型里面涉及到很多知识点,比如统一事务模型、事务传播级别、事务隔离级别等。 我们今天要讲的是其中一点, 统一事务模型 。 希望这次的分享能够让大家,对Spring事务有一个整体性的认识。 不仅仅是Template Spring的统一事务模型,解决的一个核心问题,就是不管你用的是什么数据访问方式,Hibernate、MyBatis抑或是JDBC, 你的Service层的代码都是一样的,不需要做任何变动。 使用@Transactional注解的,相信大家都用过,而且由于注解的实现比较隐晦,不利于我们理解原理,这里就不演示。 下面介绍编程式事务模型, TransactionTemplate : 不管后面你的Dao实现如何变化,上面这一段Service代码都无需修改,而且依旧可以保持事务的逻辑。 Spring是怎么做到的呢? 有人说,是 模板模式 。