@Transactional注解中的isolation属性的基本用法
时间: 2023-05-19 14:03:00 浏览: 167
@Transactional注解中的isolation属性用于设置事务的隔离级别,它可以接受以下四个值:
1. Isolation.DEFAULT:使用数据库默认的隔离级别;
2. Isolation.READ_UNCOMMITTED:允许读取未提交的数据,可能会导致脏读、不可重复读和幻读;
3. Isolation.READ_COMMITTED:只允许读取已提交的数据,可以避免脏读,但是不可重复读和幻读仍然可能发生;
4. Isolation.REPEATABLE_READ:保证同一事务中多次读取同一数据的结果是一致的,可以避免脏读和不可重复读,但是幻读仍然可能发生;
5. Isolation.SERIALIZABLE:最高的隔离级别,可以避免所有的并发问题,但是会影响性能。
需要注意的是,不同的数据库支持的隔离级别可能不同,因此在使用时需要根据实际情况进行选择。
相关问题
@Transactional注解有哪些属性可以配置?
`@Transactional`是Spring框架中的一个注解,用于标记方法或类,以控制数据库操作(如插入、更新、删除)的并发性和事务管理。它提供了对事务行为的灵活配置,主要的属性包括:
1. ** propagation (传播行为)**: 指定当此@Transactional声明的方法被调用时,如果当前没有事务,则是开启一个新的事务,还是加入到现有的事务中。可选值有REQUIRED, SUPPORTS, REQUIRES_NEW, NOT_SUPPORTED, NEVER等。
2. ** isolation (隔离级别)**: 设置事务的隔离级别,防止脏读、不可重复读和幻影读。常见的隔离级别有ISOLATION_DEFAULT(由底层数据库决定)、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。
3. ** rollbackFor (触发回滚的异常)**: 定义当抛出指定类型的异常时,事务自动回滚。可以是一个或多个异常类型,也可以是自定义异常类。
4. ** noRollbackFor (不触发回滚的异常)**: 相反,当抛出这些异常时,不会触发回滚,通常用于处理预期的业务异常。
5. ** readOnly (只读事务)**: 如果设置为true,表示该事务不允许修改数据,主要用于读取操作优化。
6. ** timeout (超时时间)**: 设置事务的超时时间,单位通常是秒。
7. ** name (事务名称)**: 可选属性,提供自定义的事务名称。
8. ** rollbackOnCommitFailure (提交失败时回滚)**: 是否在提交事务失败时自动回滚,默认情况下Spring会重试。
9. ** savepointManager (保存点管理器)**: 可选的SavepointManager接口实现,用于高级事务管理。
10. ** readOnlyProperties (只读属性列表)**: 可选,指定哪些属性在只读事务中仍然允许修改。
通过这些属性,你可以根据需要定制事务的行为,确保代码的健壮性和数据一致性。如果你需要更详细的例子或进一步了解如何使用它们,可以告诉我。
@Transactional注解的属性
@Transactional注解有几个常用的属性,包括propagation、isolation、timeout、readOnly、rollbackFor和noRollbackFor。其中,propagation属性指定事务的传播行为,可以设置为REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER或者NESTED。isolation属性指定事务的隔离级别,可以设置为DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ或者SERIALIZABLE。timeout属性指定事务的超时时间,单位为秒。readOnly属性指定事务是否为只读事务,如果设置为true,则表示只读事务,否则为读写事务。rollbackFor属性指定需要回滚的异常类型,可以设置为某个具体的异常类或者异常类的数组。noRollbackFor属性指定不需要回滚的异常类型,同样可以设置为某个具体的异常类或者异常类的数组。需要注意的是,如果同时使用类级别和方法级别的@Transactional注解,方法级别的注解会覆盖类级别的注解的配置信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [java 注解之@Transactional 注解](https://blog.csdn.net/jack_bob/article/details/106638674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [事务解答之@Transactional 注解的属性介绍](https://blog.csdn.net/cm15835106905/article/details/107879217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文