spring事物是哪个注解
其他 55
-
Spring事务的注解是
@Transactional。1年前 -
在Spring框架中,用来声明事务的注解是
@Transactional。1年前 -
Spring事务的注解有多个,常用的有:
- @Transactional:用于标注在类或方法上,表示该类或方法具有事务管理的功能。可以设置事务的传播行为、隔离级别、只读属性、超时时间等。
- @EnableTransactionManagement:用于启用Spring的事务管理功能,在配置类上进行注解。
- @TransactionalEventListener:用于标注在方法上,表示该方法是事务事件的监听器,可以监听事务的各个阶段,如提交、回滚等。
- @TransactionaRollbackListener:用于标注在方法上,表示该方法是事务回滚事件的监听器,当事务回滚时自动调用该方法。
下面将详细介绍常用的@Transactional注解的用法和操作流程:
一、使用@Transactional注解的类:
- 在需要使用事务管理的类上添加@Transactional注解。
- 在类中的方法上添加@Transactional注解,表示这些方法都应该在一个事务中运行。
二、使用@Transactional注解的方法:
- 在需要使用事务管理的方法上添加@Transactional注解。
- 可以在@Transactional注解中设置一些属性,如事务的传播行为、隔离级别、只读属性、超时时间等。
三、事务的传播行为:
- REQUIRED(默认):如果当前存在一个事务,则加入这个事务;如果当前不存在事务,则创建一个新的事务。
- REQUIRES_NEW:每次都创建一个新的事务,如果当前存在事务,则挂起当前事务。
- SUPPORTS:如果当前存在事务,则加入这个事务;如果当前不存在事务,则以非事务的方式执行。
- NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起当前事务。
- MANDATORY:如果当前存在事务,则加入这个事务;如果当前不存在事务,则抛出异常。
- NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前不存在事务,则创建一个新的事务。
四、事务的隔离级别:
- DEFAULT(默认):使用数据库的默认隔离级别。
- READ_UNCOMMITTED:允许读取未提交的数据,可能导致"脏读"、"不可重复读"、"幻读"。
- READ_COMMITTED:只能读取已提交的数据,可以避免"脏读",但可能导致"不可重复读"、"幻读"。
- REPEATABLE_READ:在一个事务中多次读取同一个数据,结果保持一致,可以避免"脏读"、"不可重复读",但可能导致"幻读"。
- SERIALIZABLE:最高的隔离级别,所有的操作都是串行的,可以避免"脏读"、"不可重复读"、"幻读",但会影响性能。
总结:
Spring事务的注解提供了方便的方式来管理事务,通过在类或方法上添加@Transactional注解,可以指定事务的行为和属性。同时,根据具体的业务需求,可以选择不同的事务传播行为和隔离级别。在使用的时候,需要注意事务的范围和边界,确保事务的正确使用和管理。1年前