Spring融合Mybatis ||事务

  • spring融合Mybatis是自动提交事务的

事务

  • 如果一个service会涉及到多个数据表的操作,则需要添加事务
  • Spring管理事务的机制:Aop的环绕机制。 Spring默认开启一个@Around,在Service方法前开启事务,Service方法后提交事务,发生异常时回滚事务。 这是spring定义好的。
  • 一些表id是自动生成的,不需要自己添加(自动增长)。 事务实际上:先添加记录,若失败回滚,再删除记录。 因此若一次购买失败后,下次的购买记录id会多+1

eg网购

  • 获取资源后,资源数量应该减少
  • 更新库存,新库存=old-购买的数量
  • 如果库存不够,自定义一个运行时异常NotEnoughExcep

添加事务的步骤

  • 中小型项目:用注解
  • 使用的jdk的动态代理机制。  添加@Transactional注解的方法所在的serviceImp类,会成为一个代理。
  1. 1.配置文件中声明:
  2. 事务管理器(需要告诉事务管理器使用哪个数据库,即制定dataSource,与上面数据库的声明一致)
  3. 2.配置文件中:开启事务注解驱动,告诉spring使用注解管理事务

在声明事务注解驱动时,一定要选择"tx"的!!

 3.在ServiceImp实现类的方法上面,添加@Transactional注解,并赋予一些属性值,告诉spring这个方法开启了事务。

必须加在public方法上面,  若放在Class上则默认该class中的所有public方法都开启事务

如果属性都是默认值的话,直接用@Transactional即可。

 

大型项目:使用aspectj, xml配置文件

  • 如果多个方法都需要事务:通配符
  • tx是指事务,tx属性,中的method都只写method名称,不写包和类

配置aop

  • 如果要制定哪些包、类中的方法配备事务,需要配置aop
  • 还需要:配置增强器,来关联advice和pointcut

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值