transactionAttributes各属性意义及配置

发布时间 - 2026-01-11 03:21:06    点击率:

在使用spring提供的JpaTemplate进行查询时,如果数据量超过100 条,查询效率就会明显降低。由于开始时使用JPA内部的双向关联,造成各实体内部关联过多,从而影响所有的操作,因此怀疑是因为JPA的关联关系所致。但是去掉关联关系后的效果不显著。

配置问题。

<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="sav*">PROPAGATION_REQUIRED</prop> 
<prop key="update*">PROPAGATION_REQUIRED</prop> 
<prop key="delete*">PROPAGATION_REQUIRED</prop> 
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> 
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> 
</props> 
</property> 
</bean> 

使用上述配置,在JPA打出的日志中显示每次查询时都要进行更新操作,查阅相关spring 的资料后发现transactionAttributes的各种属性的意义如下:

事务传播行为类型 说明
PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。


# transactionAttributes  # 属性  # 配置  # Spring事务Transaction配置的五种注入方式详解  # Spring中@Transactional用法详细介绍  # 抛出  # 挂起  # 这是  # 关联关系  # 就会  # 是因为  # 都要  # 就把  # 则在  # 就以  # 最常见  # 新建一个  # init  # true  # abstract  # TransactionProxyFactoryBean  # interceptor  # lazy  # prop  # props 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python3.6正式版新特性预览  如何批量查询域名的建站时间记录?  Mybatis 中的insertOrUpdate操作  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel如何处理异常和错误?(Handler示例)  Laravel如何实现本地化和多语言支持?(i18n教程)  BootStrap整体框架之基础布局组件  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  WEB开发之注册页面验证码倒计时代码的实现  个人摄影网站制作流程,摄影爱好者都去什么网站?  PythonWeb开发入门教程_Flask快速构建Web应用  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel如何处理表单验证?(Requests代码示例)  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel怎么实现模型属性的自动加密  Laravel如何使用Sanctum进行API认证?(SPA实战)  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何在建站之星绑定自定义域名?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  制作电商网页,电商供应链怎么做?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何在IIS中新建站点并配置端口与IP地址?  如何快速搭建高效简练网站?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  如何在VPS电脑上快速搭建网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何用y主机助手快速搭建网站?  如何基于云服务器快速搭建个人网站?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  怎样使用JSON进行数据交换_它有什么限制  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何快速建站并高效导出源代码?  怎么用AI帮你设计一套个性化的手机App图标?  如何在IIS中新建站点并解决端口绑定冲突?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何确保西部建站助手FTP传输的安全性?