spring关于“transactionAttributes”的相关配置

<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

lazy-init="true" abstract="true">

<property name="transactionManager">

<ref bean="transactionManager" />

</property>

<property name="transactionAttributes">

<props>

<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>

<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>

<prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>

<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

</props>

</property>

</bean>

PROPAGATION_REQUIRED--支持当前事务。假设当前没有事务,就新建一个事务。这是最常见的选择。

PROPAGATION_SUPPORTS--支持当前事务。假设当前没有事务,就以非事务方式运行。

PROPAGATION_MANDATORY--支持当前事务,假设当前没有事务。就抛出异常。

PROPAGATION_REQUIRES_NEW--新建事务。假设当前存在事务。把当前事务挂起。

PROPAGATION_NOT_SUPPORTED--以非事务方式运行操作,假设当前存在事务。就把当前事务挂起。

PROPAGATION_NEVER--以非事务方式运行,假设当前存在事务,则抛出异常。

PROPAGATION_NESTED--假设当前存在事务。则在嵌套事务内运行。假设当前没有事务。则进行与PROPAGATION_REQUIRED类似的操作。提高SQL语句查询速度的方法

当前全部的事务都使用“PROPAGATION_REQUIRED”属性值。而且控制事务的操作权限为仅仅读,以保证查询时不会更新数据。

依据上述 定义 “PROPAGATION_REQUIRED”属性会造成为全部的操作都创建事务。从而会出现JPA的日志中查询时也会进行更新操作的现象,也就造成了效 率的低下。

将全部查询的操作改成事务类型为“PROPAGATION_NEVER”(不使用事务),则查询效率马上提升,

可是此时操心一个问题:比方在一 个saveXXX()的方法中。假设方法内部使用更新、查询、再更新的操作流程,会不会造成调用查询时。因为上述配置造成的抛出异常。

另外

-Exception表示有Exception抛出时,事务回滚. -代表回滚      +就代表提交

readonly 就是read only, 设置操作权限为仅仅读,一般用于查询的方法,优化作用.

时间: 2024-12-29 22:23:53

spring关于“transactionAttributes”的相关配置的相关文章

Spring Boot @EnableWebMvc 与相关配置属性

注意: 1.小心使用  @EnableWebMvc 注解 根据官方文档,尽量不要使用 @EnableWebMvc 注解,因为它会关闭默认配置. ① 你希望关闭默认配置,自己完全重新实现一个 @EnableWebMvc @Configuration public class WebConfig implements WebMvcConfigurer { ② 你希望重写部分配置 //@EnableWebMvc @Configuration public class WebConfig impleme

spring的RestTemplate连接池相关配置

import org.apache.http.conn.HttpClientConnectionManager; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.springframework.boot.web.client.RestTemplateBuilder; import

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be

spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE b

SpringMVC之application-context.xml,了解数据库相关配置

上一篇SpringMVC之web.xml让我们了解到配置一个web项目的时候,如何做基础的DispatcherServlet相关配置,作为SpringMVC上手的第一步,而application-context.xml则让我们了解到如何将数据库信息加载到项目中,包含关键的数据库连接信息.sqlSessionFactory.事务等关键因素. ①.xml内容 <?xml version="1.0" encoding="UTF-8"?> <beans x

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an

spring注解机制和XML配置机制之间的比较

XML配置的优缺点: 优点有:1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译.2. 在处理大的业务量的时候,用XML配置应该更加好一些.因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用.同时spring的相关配置也能一目了然.当然,有人会说,用XML配置,在大的业务量时候会使得XML文件过大,不容易查看.这一点我们完全可以利用业务分解书写多个XML配置文件就可以了. 3.xml,在乎:整体业务关系:维护性. 缺

Struts 2相关配置与基本操作演示(案例Demo)

基本介绍 Struts 2 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品.虽然从Struts 1到Struts 2有着太大的变化,但是相对于W

spring事务管理及相关知识

最近在项目中遇到了spring事务的注解及相关知识,突然间感觉自己对于这部分知识只停留在表面的理解层次上,于是乎花些时间上网搜索了一些文章,以及对于源码的解读,整理如下: 一.既然谈到事务,那就先搞清到底什么是事务,或者说,Spring事务管理中的事务到底是指什么? 1.事务(Transaction),通常是指数据库的事务,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit),例如insert .update.delete等,事务是恢复和并发控制的基本单位. 2.事务