1. 配置数据源事务管理器
使用xml配置数据源事务管理器(优选)
org.springframework.jdbc.datasource.DataSourceTransactionManager
使用Java配置数据源事务管理器
2. @Transactional配置项
3.声明式事务流程
4. 使用方法
propagation设置的是传播行为,存在事务就沿用,不存在创建新的事务。
isplation设置的是提交模式
timeout是超时时间
5.隔离级别的选择与使用
一般会选择读写提交,有助于提高并发量,同时遏制脏读问题,但是对于数据一致性问题没有解决。
6. 传播行为
上个批量操作调用单个操作的时候,一旦某个操作出现异常,可以实现单个操作回滚的操作,这需要主方法isolation设置为required,子方法设置为requires_new
7.使用误区
不能自己传播到自己的实现类的方法。
错误使用事务。
两次插入操作不在同一个事务中,可能会导致一个成功,另一个失败。
解决方法:将两次插入转变成一次插入。
长时间占用事务。
与数据库操作无关的操作被放置到事务处理的方法中,更甚至这个方法是非常耗时的,会很影响并发能力。
错误的异常捕获
一旦保存信息步骤发生异常,异常被非正常捕获,不会回滚记录。这会导致业务逻辑问题。
正常的解决办法是:主动抛出异常