ssm 单独使用@Transactional声明式事务管理

简单聊一聊ssm单独使用@Transactional(不配合AOP)
要使用@Transactional注解要先进行以下配置
在applicationContext.xml中(有的人关于mybatis的配置不是配在这个文件的,而是配在别的文件,再在applicationContext.xml中import进来),写上这一行
在这里插入图片描述
配置好后我们需要在需要进行事务管理的类(实现service接口的类,不建议在接口上)上添加注解@Transactional
注意,@Transactional 注解的类要是一个public的类,其它的默认是不生效的
那么这个类内的所有方法都默认使用事务管理
如果异常是出自sql语句的异常,比如更新的字段不存在等,是会进行回滚的,但如果异常不是放生自sql语句的话,是不会进行回滚的,那么应不应该进行回滚呢,我个人认为是需要进行回滚的,因为本次业务逻辑的处理中出现了异常,所以本次的请求应该回滚,使数据库恢复未处理请求前的状态,即便问题不出在sql上
ssm 单独使用@Transactional声明式事务管理_第1张图片
如果要处理其它的异常,有两种方式
1.@Transactinal + try, catch
但一定要在catch中throw一个异常,否则事务不会生效,仍然不会回滚
ssm 单独使用@Transactional声明式事务管理_第2张图片
2.@Transactinal注解中加上rollbackFor={Exception.class}
在这里插入图片描述
图中的readOnly可以不配,因为默认就是false
只要出现异常就会进行回滚
加上后就不用进行try catch了

你可能感兴趣的:(后台开发,java)