声明式事务 @Transactional (通常用在service层)
事务属性:传播行为,隔离级别,回滚,只读,过期
1,spring支持事务传播行为:propagation(常用以下两个)
① required 使用调用方法的事务,即在当前事务进行,买多本书,但是钱不够,这样的话整个事务回滚,一本书都不会买得到,钱也不会扣。
② requires_new 开启新的事务,而调用方法的事务会被挂起,即每次动作都会开启新的事务,即使出错也可以回滚到当前事务,不会影响到其他事务。
2,隔离级别:isolation
事务并发容易产生问题,比如脏读,不可重复读,幻读等,指定事务隔离级别解决
spring事务隔离级别:读已提交,读未提交,可重复读,序列化等
3,回滚:rollbackFor,noRollbackFor等
默认时spring对所有异常进行回滚,可指定某种异常回滚或者不回滚
4,只读:readOnly
指定事务只能读取数据而不更新数据,可以帮助数据库引擎优化事务
5,过期:timeout
事务回滚前最多占用多长时间