2026-10-20 10:05:38
Spring的4种事务特性: 原子性:保证事务的不可分割,事务中的所有操作要么全部完成,要么全部不执行。 一致性:确保事务执行前后数据的一致性,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:防止事务执行过程中被其他事务干扰,多个事务并发执行时,一个事务的执行不应影响其他事务的执行结果。 持久性:确保事务一旦结束,其对数据库所做的更改就永久保存下来,即使发生系统崩溃。
Spring的5种事务隔离级别: DEFAULT:使用数据库默认的事务隔离级别。 READ UNCOMMITTED:允许事务读取其他事务的未提交数据,可能导致脏读、不可重复读和虚幻读。 READ COMMITTED:保证事务只能读取已经提交的数据,避免脏读,但可能引发不可重复读和虚幻读。 REPEATABLE READ:确保在同一事务中多次读取同一数据的结果一致,避免脏读和不可重复读,但可能引发虚幻读。 SERIALIZABLE:强制事务串行执行,避免所有读问题,但代价最高。
Spring的7种事务传播行为: PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,则以非事务方式执行。 PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。 PROPAGATION_REQUIRES_NEW:创建一个新的事务,并暂停当前事务。 PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将当前事务挂起。 PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则行为等同于PROPAGATION_REQUIRED。