Spring声明式事务管理的一些事
程序员文章站
2022-05-21 09:32:01
...
- 对于read-only的真实理解:推荐帖子:http://www.iteye.com/topic/319768。read-only靠底层的jdbc驱动和数据库的支持。在大多数数据库系统下,只读事务里面是不可以修改数据,并且,在同一个事务里面同一个sql读出来的同一条记录是不会变化的,这是我们开启readonly最重要的原因:我们需要能够可重复读。 它是性能优化的推荐配置。
- 对于没有执行数据库操作的方法,而被Spring进行事务管理,同样会占用数据库资源。所以对于执行时间比较长的方法,比如要进行一些网络请求,最好不要进行事务管理,因为这样会长时间占用数据库连接资源,当并发量大的时候,会造成数据库连接被占尽,而其他请求则一直排队等候。
- 业务层中的方法调用抛出异常: 有时Spring出抛出这样的异常Transaction rolled back because it has been marked as rollback-only一般是由于一个server调用另一个server其中一个server抛出异常,虽然另一个server捕获了异常,但是以上异常同样会抛出,因为一个server抛出异常Spring认为拦截此server应该回滚,但是另一个server却捕获了异常不用回滚,但是Spring已经标记了需要回滚,所以会发生此类事情。
- 事务的传播属性
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
上一篇: Android 游戏框架 libgdx 学习笔记 - Log 使用
下一篇: spring事务的[Transaction rolled back because it has been marked as rollback-only]浅析
推荐阅读
-
Spring声明式事务和@Aspect的拦截顺序问题的解决
-
详解Spring学习之声明式事务管理
-
详解Spring学习之声明式事务管理
-
Spring实现声明式事务的方法详解
-
Spring事务:声明式事务管理
-
Spring提供的Hibernate申明式事务管理有两种办法 HibernateSpringBeanAOPORM
-
spring5 源码深度解析----- @Transactional注解的声明式事物介绍(100%理解事务)
-
Spring的编程式事务和声明式事务
-
Spring中的IOC和AOP以及Spring中的声明式事务
-
Spring 2.5整合iBATIS 2.3并使用Spring的声明式事务管理