Java面试题更新 2026-08-05

请说明 Spring 事务支持的隔离级别有哪几种,并简要描述各自的特点。

后端开发技术原理

考察说明

考查对 Spring 事务隔离级别的掌握程度,以及能否区分不同级别的并发控制能力。

回答思路

  1. 【回答框架 1】Spring 事务隔离级别基于数据库隔离级别,共五种:DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。DEFAULT 表示使用底层数据库默认隔离级别。
  2. 【回答框架 2】READ_UNCOMMITTED 允许读取未提交数据,可能产生脏读、不可重复读和幻读,并发性最高但一致性最差。READ_COMMITTED 只允许读取已提交数据,避免脏读,但可能出现不可重复读和幻读。
  3. 【回答框架 3】REPEATABLE_READ 保证同一事务内多次读取同一数据结果一致,避免脏读和不可重复读,但可能产生幻读。SERIALIZABLE 完全串行化,避免所有并发问题,但性能最低。
  4. 【回答框架 4】实际选择需权衡一致性与性能,通常默认使用数据库默认级别,如 MySQL 默认 REPEATABLE_READ,PostgreSQL 默认 READ_COMMITTED。Spring 通过 @Transactional 的 isolation 属性指定隔离级别。
  5. 【关键点 1】Spring 定义五种隔离级别,DEFAULT 表示数据库默认。
  6. 【关键点 2】五种级别由弱到强:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。
  7. 【关键点 3】脏读、不可重复读、幻读随级别增强而逐渐避免。
  8. 【关键点 4】隔离级别通过 @Transactional(isolation = Isolation.XXX) 设置。
  9. 【易错点 1】不要把 DEFAULT 当作独立隔离级别,它实际是委托给数据库。
  10. 【易错点 2】不要认为 REPEATABLE_READ 能完全避免幻读,MySQL InnoDB 通过间隙锁近似解决,但标准定义仍可能幻读。
  11. 【易错点 3】不要忽略隔离级别对性能的影响,SERIALIZABLE 并发度极低。