Transactional的作用域具体解释下
时间: 2023-07-12 20:57:53 浏览: 75
spring-data-jpa-using-hibernate-customer-domain
Transactional 的作用域指的是事务应该在哪个层级上进行管理,决定了事务的粒度和范围,直接影响到事务的性能和可维护性。
1. 类级别
将事务应用于整个类的所有公共方法。这种方式适用于所有方法都需要在同一个事务中执行的情况。在这种情况下,可以在类上使用 @Transactional 注解,这样所有公共方法都会受到事务管理。类级别的事务管理可能会对性能产生负面影响,因为它可能会在不需要事务的方法中引入事务管理。
2. 方法级别
将事务应用于单个方法。这种方式适用于只有特定的方法需要在事务中执行的情况。在这种情况下,可以在方法上使用 @Transactional 注解,这样只有被注解的方法会受到事务管理。方法级别的事务管理可以提高性能,因为只有需要事务管理的方法才会受到影响。
3. 嵌套级别
在一个事务内部开启另一个事务。这种方式适用于需要在一个事务中执行多个操作的情况。在这种情况下,可以使用 @Transactional 注解的嵌套属性来指定事务的嵌套级别。嵌套级别可以是“PROPAGATION_REQUIRED”(默认值)或“PROPAGATION_REQUIRES_NEW”。PROPAGATION_REQUIRED 表示当前方法必须在一个事务内执行,如果当前已经存在事务,则加入该事务;如果当前没有事务,则开启一个新的事务。PROPAGATION_REQUIRES_NEW 表示当前方法必须在一个新的事务内执行,如果当前已经存在事务,则挂起当前事务,并开启一个新的事务。
4. 注解级别
使用注解来标记需要在事务中执行的方法。这种方式适用于需要动态地管理事务的情况。在这种情况下,可以使用 @Transactional 注解的属性来指定事务管理的细节,如事务的隔离级别、超时时间、回滚规则等。注解级别的事务管理可以提高可维护性,因为事务管理的细节可以在注解中动态配置。
阅读全文