java中事务的传播属性和隔离级别

七个事务传播属性

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
今日推荐