Spring中如何使用@Transactional进行声明式事务管理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2072个文字,预计阅读时间需要9分钟。
@Transactional 注解支持9个属性的设置,这里仅讲解其中使用较多的三个属性:readOnly、propagation、isolation。
其中,propagation 属性用来指定事务的传播行为,isolation 属性用来设置事务隔离级别。
- readOnly:设置当前事务为只读,这意味着事务中的所有操作都只能查询数据,不能进行修改。- propagation:指定事务的传播行为,例如: - REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 - REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。 - SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。 - MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。- isolation:设置事务隔离级别,例如: - DEFAULT:使用数据库默认的事务隔离级别。 - READ_COMMITTED:读取已提交的数据,防止脏读。 - REPEATABLE_READ:可重复读,防止脏读和不可重复读。 - SERIALIZABLE:串行化,防止脏读、不可重复读和幻读。
@Transactional注解支持9个属性的设置,这里只讲解其中使用较多的三个属性:readOnly、propagation、isolation。其中propagation属性用来枚举事务的传播行为,isolation用来设置事务隔离级别,readOnly进行读写事务控制。
本文共计2072个文字,预计阅读时间需要9分钟。
@Transactional 注解支持9个属性的设置,这里仅讲解其中使用较多的三个属性:readOnly、propagation、isolation。
其中,propagation 属性用来指定事务的传播行为,isolation 属性用来设置事务隔离级别。
- readOnly:设置当前事务为只读,这意味着事务中的所有操作都只能查询数据,不能进行修改。- propagation:指定事务的传播行为,例如: - REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 - REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。 - SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。 - MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。- isolation:设置事务隔离级别,例如: - DEFAULT:使用数据库默认的事务隔离级别。 - READ_COMMITTED:读取已提交的数据,防止脏读。 - REPEATABLE_READ:可重复读,防止脏读和不可重复读。 - SERIALIZABLE:串行化,防止脏读、不可重复读和幻读。
@Transactional注解支持9个属性的设置,这里只讲解其中使用较多的三个属性:readOnly、propagation、isolation。其中propagation属性用来枚举事务的传播行为,isolation用来设置事务隔离级别,readOnly进行读写事务控制。

