开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情
写在前面
作为一个java程序员,spring应该都不会陌生了吧?
对于大部分程序员来说,spring的入门,估计跑起一个框架,熟悉一下开发的流程,基本上就掌握spring框架的开发了。
随着开发年限的变大,我们不能仅仅是掌握到这个地步,更应该深入的学习spring框架。
这不,接下来就是spring框架的学习之旅了,希望可以帮助到大家。
一、事务支持
1.1 Spring框架事务管理相关接口
Spring并不直接管理事务,而是提供了事务管理接口是PlatfomTransactionManager,
通过这个接口,spring为各个平台如JDBC、Hibernate 等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。
- PlatformTransactionManager接口 -- 平台事务管理器. (真正管理事务的类)。该接口有具体的实现类,根据不同的持久层框架,需要选择不同的实现类!
- TransactionDefinition接口 -- 事务定义信息. (事务的隔离级别,传播行为,超时,只读)
- TransactionStatus接口 -- 事务的状态(是否新事务、是否已提交.是否有保存点是否回滚)
- 总结: 上述对象之间的关系: 平台事务管理器真正管理事务对象. 根据事务定义的信息 TransactionDefinition进行事务管理, 在管理事务中产生一些状态. 将状态记录到TransactionStatus中
- PlatformTransactionManager 接口中实现类和常用的方法
1.接口的实现类
* 如果使用的Spring的JDBC模板或者 MyBatis (IBatis)框架,需要选择DatasourceTransactionManager实现类
* 如果使用的是Hibernate的框架,需要选择HibernateTransactionmanager实现类
2.该接口的常用方法
* void commit(TransactionStatus status)
* TransactionStatus getTransaction(TransactionDefinition definition)
* void rollback(Transactionstatus status)
- TransactionDefinition
1.事务隔离级别的常量
* static int ISOLATION DEFAULT --采用数据库的默认隔高级别
* static int ISOLATION READ_ UNCOWMITTED
* static int ISOLATION READ_ COWNITTED
* static int ISOLATION REPEATABLE_ READ
* static int ISOLATION SERIALIZABLE
2.事务的传播行为常量(不用设置,使用默认值)
* 先解释什么是事务的传播行为: 解决的是业务层之间的方法调用! !
* PROPAGATION_ REQUIRED(默认值) -- A中有事务,使用中的事务。如果没有,B就会开启一个新的事务,将A包含进来。(保证A,在同-个事务中), 默认值! !
* PROPAGATIONL SUPPORTS -- A中有事务,使用A中的事务。如果A中没有事务。那么B也不使用事务。
* PROPAGATION MANDATORY -- A中有事务,使用A中的事务。如果A没有事务. 抛出异常.
* PROPAGATION REQUIRES NEW -- A中有事务, 将A中的事务挂起。B创建一个新的事务. (保证A, B没有在一个事务中)
* PROPAGATION NOT_ SUPPORTED -- A中有事务, 将A中的事务挂起。
* PROPAGATION NEVER -- A中有事务,抛出异常.
* PROPAGATION_ NESTED -- 嵌套事务. 当A执行之后,就会在这个位置设置一个保存点.如果B没有可题。执行通过如果础现异常,运行客户根据需求回滚C选择回滚到保存点或者是最初始状态)
好了,以上就是Spring学习之旅-组件支撑篇(3) 的全部内容了。
今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^
如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!