java spring 事务面试题

java spring 事务面试题

1、spring事务控制放在service层,在service方法中一个方法调用service中的另一个方法,默认开启几个事务?

      spring的事务传播方式默认是PROPAGATION_REQUIRED,判断当前是否已开启一个新事务,有则加入当前事务,否则新开一个事务(如果没有就开启一个新事务),所以答案是开启了一个事务。


2、spring 什么情况下进行事务回滚?

  Spring、EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚

  unchecked异常,即运行时异常runntimeException 回滚事务;

  checked异常,即Exception可try{}捕获的不会回滚.当然也可配置spring参数让其回滚.

  spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(Spring默认取决于是否抛出runtime异常).
   如果抛出runtime exception 并在你的业务方法中没有catch到的话,事务会回滚。
  一般不需要在业务方法中catch异常,如果非要catch,在做完你想做的工作后(比如关闭文件等)一定要抛出runtime exception,否则spring会将你的操作commit,这样就会产生   脏数据.所以你的catch代码是画蛇添足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值