@Transactional属性
时间: 2023-11-01 19:58:12 浏览: 32
@Transactional属性是用来控制Spring事务的行为的注解。它可以应用于类级别或方法级别。属性可以用来定义事务的传播行为、事务的隔离级别、事务的超时时间、事务是否只读、事务的回滚规则等等。
其中一些常用的属性包括:
- propagation:定义事务的传播行为,决定一个方法调用其他方法时,事务如何传播。
- isolation:定义事务的隔离级别,决定了事务之间的可见性。
- timeout:定义事务的超时时间,如果事务在规定的时间内没有完成,则会被回滚。
- readOnly:定义事务是否只读,如果是只读事务,则数据库的修改操作会被禁止。
- rollbackFor:定义触发事务回滚的异常类型。
- noRollbackFor:定义不触发事务回滚的异常类型。
相关问题
@transactional 属性
@transactional属性用于指定事务的一些属性。其中,propagation属性用于指定事务的传播特性,它决定了一个事务方法调用另一个事务方法时,如何处理事务。rollbackFor属性用于指定事务回滚的异常类型。当抛出指定异常时,事务将回滚。value和transactionManager属性用于指定事务管理器的名称,当配置了多个事务管理器时,可以使用这两个属性来选择具体的事务管理器。通过设置这些属性,可以对事务进行更加精细的控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *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%"]
- *3* [声明式事务@Transactional常用属性汇总](https://blog.csdn.net/weixin_73077810/article/details/131161396)[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 ]
@Transactional属性详解
@Transactional是Spring框架中的一个注解,用于控制事务的提交和回滚。使用@Transactional注解可以使方法具有原子性,即要么全部执行成功,要么全部执行失败。
@Transactional注解可以应用在类级别和方法级别上,其属性如下:
1. propagation:事务的传播行为,默认值为REQUIRED。常用的取值有:
- REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
- REQUIRES_NEW:创建一个新的事务,并且暂停当前事务(如果存在)。
- SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
- NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,则将事务挂起。
- MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
- NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。
2. isolation:事务的隔离级别,默认值为DEFAULT。常用的取值有:
- DEFAULT:使用数据库默认的隔离级别。
- READ_UNCOMMITTED:允许脏读,未提交的数据可以被其他事务读取。
- READ_COMMITTED:不允许脏读,读取的数据是已经提交的数据。
- REPEATABLE_READ:保证可重复读,即在一个事务中多次读取同一数据时,其值不会发生变化。
- SERIALIZABLE:最高的隔离级别,保证所有事务按照顺序依次执行。
3. timeout:事务的超时时间,默认值为-1,表示不超时。单位为秒。
4. readOnly:设置事务为只读模式,默认值为false。
5. rollbackFor:指定需要回滚的异常类型,多个异常类型可以用逗号分隔。
6. noRollbackFor:指定不需要回滚的异常类型,多个异常类型可以用逗号分隔。
7. value:可以用来覆盖类级别的@Transactional注解中的属性。例如,在类级别的@Transactional注解中指定了propagation=REQUIRED,而在方法级别的@Transactional注解中指定了propagation=REQUIRES_NEW,则方法级别的注解会覆盖类级别的注解。