java中事务的传播属性和隔离级别
其他
2020-01-18 11:35:10
阅读次数: 0
七个事务传播属性
1. Propagation.REQUIRED:支持当前事务,如果当前没有事务,则新建一个事务,默认使用这种,也是最常见的.
2. Propagation.SUPPORTS:支持当前事务,如果没有事务,就以非事务的方式执行.
3. Propagation.MANDATORY:支持当前事务,如果没有事务,就抛出异常.
4. Propagation.REQUIRES_NEW:新建事务,如果当前存在事务,就把当前事务挂起.
5. Propagation.NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,就把当前事务挂起.
6. Propagation.NEVER:以非事务的方式执行,如果当前存在事务,则会抛出异常.
7. Propagation.NESTED:如果当前事务存在,则执行嵌套事务,否则执行类似REQUIRED的操作.
五种隔离级别
1. ISOLATION_DEFAULT:是事务管理器的默认隔离级别,使用数据库默认的隔离级别,另外四个与jdbc的隔离级别相对应
2. ISOLATION_READ_UNCOMMITTED:最低的隔离级别,它允许一个事务读取另一个事务未提交的数据,会产生脏读,不可重复读,幻读
3. ISOLATION_READ_COMMITTED:保证一个事务修改的数据提交后另一个事务才能读取到,可以避免脏读.
4. ISOLATION_REPEATABLE_READ:数据库就是使用的这种隔离级别,可以避免脏读和不可重复读,但是可能出现幻读(幻读:一个事务读取完,另一个事务提交了更新,本事务再次读取会发现前后数据不一致,像产生了幻觉一样,所以叫幻读)
5. ISOLATION_SERIALIZABLE:花费代价最高也是最可开的事务隔离级别,事务被处理为顺序执行,但是这种隔离级别会产生锁表,就是一个事务读取之后,另一个事务必须等待这个事务完成,他才可以进行,第一个事务会将整张表锁起来,一般不会使用这种隔离级别,性能极低!
发布了41 篇原创文章 ·
获赞 9 ·
访问量 2545
转载自blog.csdn.net/weiwei_six/article/details/103552378