圣斗士冥王神话篇手游
1
2025 / 05 / 25
1、Spring提供了7种不同的事务传播行为: REQUIRED:这是最常用的传播行为,也是Spring默认的。当外部事务回滚时,内部事务也会回滚。 SUPPORTS:适用于查询操作,如果外部有事务,则跟随外部的事务,如果没有,则不会创建新的事务。
2、MANDATORY:必须在事务中执行,无事务则抛出异常; NESTED:在当前事务下开启嵌套事务,异常影响嵌套事务,不回滚其他。总结 理解Spring事务传播性及其使用场景至关重要,正确应用这些规则能够确保应用程序的健壮性和可靠性。
3、如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,这是最常见的选择,也是Spring默认的事务传播行为。支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
事务是逻辑上的一组操作,要求其要么全部成功,要么全部失败,具有原子性、一致性、隔离性和持久性等特性。隔离性在不同级别下有不同的表现,如DEFAULT(平台默认)允许脏读、不可重复读和虚幻读,而可重复读和串行化则分别避免了部分读问题。MySQL默认为可重复读,Oracle默认为读已提交。
Spring框架定义了七种传播行为:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED。这七种行为决定了事务如何在不同的方法调用间传播。
错误的传播行为:使用不支持事务的传播特性。确认使用的传播特性符合事务需求。1 不支持事务的存储引擎:如MySQL的MyISAM引擎。选择支持事务的存储引擎。1 数据源未配置事务管理器:在SpringBoot中,通常已经配置好。确保数据源正确配置事务管理。1 代理类过早实例化:导致无法被代理增强。
1、事务的隔离级别:数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;Read Uncommitted:读未提交数据;(会出现脏读)Read Committed:读已提交数据;Repeatable Read:可重复读;Serializable:串行化。
2、Spring事务隔离级别共有5种,隔离级别的设置依赖当前数据库是否支持。 DEFAULT:使用当前数据库的默认隔离级别。例如Oracle是READ_COMMITED,MySQL是READ_REPEATED。 READ_UNCOMMITED:可导致脏读、不可重复读、幻读。 READ_COMMITTED:阻止脏读,可导致不可重复读、幻读。
3、使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应 ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
4、事务的隔离级别是该属性用于设置底层数据库的事务隔离级别,常见的隔离级别包括读未提交、读已提交、可重复读和串行化等。Transactional注解可以作用于接口、接口方法、类以及类方法上,它可以通过不同的参数来选择什么类型Exception异常下执行回滚或者不回滚操作。
5、Spring的事务管理配置属性包括事务名称、事务读取模式、事务传播行为和事务隔离级别。事务名称用于指定哪些方法需要事务控制,支持通配符;读取模式用于指定事务是否为只读,以提高查询性能;传播行为控制事务管理方式,如新建事务、在现有事务中执行、挂起当前事务等;隔离级别确保并发访问下的数据完整性和一致性。