spring 本地数据库事务 学习笔记
事务的传播属性(7种)
1. nested(禁用)
作用:嵌套关系,外层抛异常,外层回滚,里层也回滚;里层回滚,外层没关系
注意:禁用此事务属性,是无法掌握事务回滚时,要调用的savePoint
2. required (默认属性)
spring事务的默认设置,如果当前有事务存在就融入当前事务。如果没有则新建一个事务
3. requires_new
事务存在就挂起当前事务,新建一个事务(spring 在这里的处理的方式是新建一个连接,然后执行数据库操作)
4. supports ()
如果当前事务存在,就用当前事物去执行数据库操作;如果不存在,不执行数据库操作,不使用事务;
5. mandatory ()
当前事务不存在就抛出异常
6. non_supported ()
当前有事务,就suspend挂起当前的事务;自己不使用事务去执行数据库操作
7. never ()
当前存在事务,就抛异常;
数据库事务
1. 事务在没提交的时候,写入的是一个临时内存表,事务在提交的时候,由内存表写入物理磁盘
2. 至于事务提交是否及时写回磁盘,只要事务提交后,数据库正确返回,是一定写回磁盘的
在service层操作事务案例
1. 注入DAO层
@Autowired
private InsertDao insertDao;
2. 创建事务
@transactional
public void insertTable(string name){
insertDao.insert(name);
}
事务流程
1. create a new transaction
2. connect jdbc
3. set manul commit
4. commit tansaction