为什么要设置事务隔离级别
一个未提交的事务对数据进行了写操作,这个时候在不同的事务隔离级别下,其它事务读到的数据可能是不同的,设置事务隔离级别可以保证数据的一致性。
事务隔离等级介绍
- READ_COMMITTED:一个事务中修改的数据提交后才能被另一个事务读取
- READ_UNCOMMITTED:修改了数据未提交,其他事务读到的是修改后的数据
- REPEATABLE_READ:事务开始时会备份一份数据
- SERIALIZABLE:一个事务执行时,其他事务要等待他结束才能执行
mybatis通过@Transactional设置隔离级别
通过“isolation”参数设置隔离级别
- Isolation.DEFAULT //数据库默认的事务隔离级别
- Isolation.READ_COMMITTED
- Isolation.READ_UNCOMMITTED
- Isolation.REPEATABLE_READ
- Isolation.SERIALIZABLE
@Transactional(rollbackFor = Exception.class,isolation = Isolation.SERIALIZABLE)