ShardingSphere-JDBC整合SpringBoot JPA读写分离失败

问题

最近在整合ShardingSphere JDBC和Spring Boot的时候遇到一个问题,当ORM框架使用JPA时,读写分离会失效,查询仍然走主库并不会走从库!同样的配置使用Mybatis就没有任何问题。
在查阅各种资料后,初步确定未JPA事务问题

ShardingSphere负载均衡算法

我当前使用的版本是5.1.2,该版本的负载均衡算法还比较简单,我配置的是ROUND_ROBIN轮询算法,但负载均衡算法都有一个隐藏逻辑:

开启事务时,查询也会走主库,并不会走从库

这样做很好理解,事务没有提交,事务内的查询能查到未提交数据,符合整体逻辑,如果不走主库,必然查不到

JPA事务

通过Debug可发现,SpringBoot默认的JpaRepository实现类为SimpleJpaRepository
在这里插入图片描述
查看其源码可以发现,默认开启只读事务
在这里插入图片描述
当我们调用JpaRepository内存在的方法时,实际走的是SimpleJpaRepository

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/20972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【历史上的今天】4 月 23 日:YouTube 上传第一个视频;数字音频播放器的发明者出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 23 日,世界读书日。在 1564 年的这一天,全世界最卓越的文学家之一莎士比亚出生;1616 年的这一天,莎士比亚…

shell脚本5数组

文章目录 数组1 数组定义方法2 获取数组长度2.1 读取数组值2.2 数组切片2.3 数组替换2.4 数组删除2.5 追加数组元素 3 实验3.1 冒泡法3.2 直接选择法3.3 反排序法 数组 1 数组定义方法 数组名(value0 valuel value2 …) 数组名( [0]value [1]value [2]value …) 列表名“val…

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…

真题详解(传引用)-软件设计(七十五)

真题详解(补码转换)-软件设计(七十四)https://blog.csdn.net/ke1ying/article/details/130674214 分治算法技术设计______。 答案:1、问题划分 2、递归求解 3、合并解 虚拟存储体系_____两级构成。 解析:主存 和 辅…

linux环境安装使用tomcat详解

01-安装Tomcat # 0.下载tomcat http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz # 1.通过工具上传到Linux系统中 # 2.解压缩到/usr目录中 [rootlocalhost ~]# tar -zxvf apache-tomcat-8.5.46.tar.gz -C /usr/ -C 用来指…

【AI绘图 丨 Midjourney 系列教程二】— 初识超火的AI绘画神器Midjourney

今天起,由 Midjourney 打头阵,让我们开始共同探索一系列的 AI 领域革命性作品,包括 Midjourney、Stable Diffusion、ChatGPT 等等,学习这些新时代的魔法和它的咒语。 写在前面 官方文档是最好的入门课程。相较于市面上琳琅满目的…

《计算机网络—自顶向下方法》 Wireshark实验(七):以太网与ARP协议分析

1 以太网 1.1 介绍 以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。 经典以太网:是以太网的原始形式,运行速度从 …

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制)

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制) 目录 应用背景操作步骤1、宏的录制启用2、宏的使用3、宏的保存4、宏的禁用 应用背景 宏是一个自动化完成重复性工作的工具,使用宏可以提高我们的工作效率,那应该怎样使用宏这一…

ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL

文章目录 1 报错内容2 报错解决3 并行处理的设置补充说明 1 报错内容 通常为连续两段报错: Error Number :-2147467259 Error Message :对 COM 组件的调用返回了错误 HRESULT E_FAIL 。 Module name : mSWFlow Function name : createStream Procedure ( error li…

chatgpt赋能Python-python3_5如何安装

Python3.5安装指南 Python是一种高级编程语言,它广泛用于Web开发、数据分析、机器学习等领域。在Python的众多版本中,Python3.5是最常用的版本之一。如果你正在考虑学习Python3.5或者需要使用Python3.5进行项目开发,那么接下来的安装指南将会…

第十三章 使用DHCP动态管理主机地址

文章目录 第十三章 使用DHCP动态管理主机地址一、动态主机地址管理协议1、DHCP简介2、DHCP常见术语 二、部署DHCP服务程序1、安装DHCP服务程序2、配置文件参考模板3、dhcpd服务程序配置文件中常见参数及作用 三、自动管理IP地址1、机房所用的网络地址以及参数信息2、关闭虚拟网…

Flink从入门到精通之-10容错机制

Flink从入门到精通之-10容错机制 流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因…

STM32-ADC多通道输入实验

之前已经介绍了几个ADC的笔记和实验了,链接如下: 关于ADC的笔记1_Mr_rustylake的博客-CSDN博客 STM32-ADC单通道采集实验_Mr_rustylake的博客-CSDN博客 STM32-单通道ADC采集(DMA读取)实验_Mr_rustylake的博客-CSDN博客 接下来…

语音常识与基本概念

数字信号 连续时间信号:在连续时间范围内定义的信号,信号的幅度可以是连续的(模拟信号),也可以是离散的 离散时间信号:时间为离散变量的信号,即独立变量时间被量化了,而幅度仍是连续变化的 数字信号&#x…

【云计算与虚拟化】第二章 实验二 Vmware Workstation 15的使用

实验二 Vmware Workstation 15的使用 在上一实验的基础上,将两台虚拟机调节到在桥接模式下,配置相应的网络参数,实现虚拟机1和2能相互通信,虚拟机1和2能够ping通外网,虚拟机1和2能ping通物理机。 (截取…

车规级MCU芯片

作为车辆控制的核心器件,MCU主要用于车身控制、驾驶控制、信息娱乐和驾驶辅助系统。 8位MCU :提供低端控制功能:风扇控制、空调控制、雨刷、天窗、 车窗升降、低端仪表盘、集线盒、座椅控制、门控模块。 16位MCU :提供中端控制功能:用于动力…

【QuartusII】0-创建工程模板

一、创建工程 1、激活安装quartus II软件后,打开即见如下界面 2、在菜单栏 “File -> New Project Wizard…”中,进入创建工程流程 3、第一部分,如下图,配置路径、项目名称、以及顶层文件(类似C语言的main&#xf…

MySQL---存储过程(局部变量、用户变量、系统变量(全局变量、会话变量)、传参(in、out、inout))

1. 存储过程特性 存储过程就是数据库 SQL 语言层面的代码封装与重用。 有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现 复杂的逻辑功能; 函数的普遍特性:模块…

Spark大数据处理讲课笔记4.5 Spark SQL数据源 - Hive表

文章目录 零、本讲学习目标一、Spark SQL支持读写Hive二、Spark配置hive-site.xml三、准备工作(一)启动Hive的metastore(二)启动Spark Shell 四、Spark读写Hive数据(一)导入SparkSession(二&…

JavaScript实现打印倒金字塔的代码

以下为实现打印倒金字塔的程序代码和运行截图 目录 前言 一、实现打印倒金字塔 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找; 2.本博文代码可以根据题目要求实现相关使用功…