什么是spring的事务抽象

一、提供⼀致的事务模型支持不同的事务管理技术

A、JDBC/Hibernate/myBatis
B、DataSource/JTA
二、事务抽象的核⼼接⼝

A、PlatformTransactionManager

a、  DataSourceTransactionManager
b、HibernateTransactionManager
c、JtaTransactionManager

B、TransactionDefifinition

a、Propagation
b、solation
c、Timeout
d、Read-only status

 三、事务的传播特性

四、事务隔离特性

 

a、脏读,是因为当一个事务读取另一个未提交事务的数据时,这个数据可能处于不确定的状态,也就是说,它可能被修改了,但还没有被提交。这种不确定状态的数据也被称为脏数据,因此被称为脏读。

b、幻读(phantom read)之所以被称为幻读,是因为当一个事务在同一查询语句下多次执行时由于其他事务插入了新的数据,第二次查询返回了第一次查询未返回的新数据,就好像新的数据像幻影一样出现在查询结果中,这种现象就被称为幻读。

c、不可重复读(non-repeatable read)之所以被称为不可重复读,是因为当一个事务在同一查询语句下多次执行时,由于其他事务修改了数据,第二次查询返回了与第一次不同的结果,从而导致无法重复读取相同的数据。 

五、编程式事务

A、TransactionTemplate
a、 TransactionCallback-----有返回值
b、TransactionCallbackWithoutResult----无返回值
B、PlatformTransactionManager
a、可以传⼊ TransactionDefifinition 进⾏定义
C、一个例子

 

  

事务回滚是指在数据库管理系统中,如果一个事务在执行过程中出现了错误或者其他的异常情况,数据库会自动撤销事务执行的所有操作,回滚到事务开始之前的状态。这样可以保证数据库的一致性和可靠性。

D、TransactionTemplate

六、声明式事务

  

AOP Proxy-----进行模板式的事务操作

AOP-----动态代理或封装AspectJ

A、基于注解的配置⽅式

a、开启事务注解的⽅式和xml文件配置(二选一)

a1、@EnableTransactionManagement
a2、<tx:annotation-driven/>(xml配置的)
b、一些配置
b1、proxyTargetClass-----true或false(AOP是基于接口的还是基于类的)
b2、mode
b3、order-----事务AOP拦截顺序

c、@Transactional

c1、transactionManager
c2、propagation------传播性
c3、isolation
c4、timeout
c5、readOnly
c6、怎么判断回滚----当碰到异常类时回滚

  

事务是通过调用代理类实现的方法3内部调用@Transactional的方法2时 ,由于方法2本身是没有事务的,所以并没有走到方法2事务那一步,只是隐式的调用了数据库的默认事务就提交了,所以会插入·一条记录不会因异常类而回滚

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一点知趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值