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

news2024/12/24 9:18:04

问题

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

ShardingSphere负载均衡算法

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

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

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

JPA事务

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FIDO认证 无密码的愿景

目录 1、简介 2、关于FIDO联盟 3、FIDO如何工作 3.1 FIDO 注册 3.2 FIDO登录 4、FIDO2 4.1 W3C WebAuthn 4.2 CTAP2 4.3 CTAP1 4.4 FIDO UAF 4.5 FIDO U2F 5、FIDO身份验证的优势 5.1 安全 5.2 便利性 5.3 隐私政策 5.4 可扩展性 1、简介 FIDO(在线…

Python 爬虫(一):爬虫伪装

1 简介 对于一些有一定规模或盈利性质比较强的网站,几乎都会做一些防爬措施,防爬措施一般来说有两种:一种是做身份验证,直接把虫子挡在了门口,另一种是在网站设置各种反爬机制,让虫子知难而返。 2 伪装策…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2 第二章——安装Atlas 200I DK A2跑通第一个案例

准备相关软件 包括一台PC机(空间大于10g),读卡器,32gsd卡,一根网线。 具体步骤: 开始烧录开发板镜像:将sd卡插入读卡器,将读卡器插入PC机的USB接口,根据相关链接在PC机下载制卡工具…

混合云到底是什么?

大型企业不能再仅仅拥有本地系统就可以逃脱;因此,将一些数字化运营迁移到云端成为了必要。 第一步涉及选择是使用公共云还是私有云,或者两者都使用。使用两者是混合云。 但混合云到底是什么?在回答之前,让我们看看这…

图生图—AI图片生成Stable Diffusion参数及使用方式详细介绍

本文为博主原创文章,未经博主允许不得转载。 本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。 Stable Diffusion webui的详细安装步骤以及文生图(txt2…

【Linux】Linux入门学习之常用命令四

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

Jenkins教程-Docker安装Jenkins,并构建任务等

本文主要介绍如何在docker中安装Jenkins,启动容器后,如何使用Jenkins构建自己的项目,创建任务等 文章目录 前言Docker安装Jenkins访问Jenkins并配置Jenkins构建项目创建任务源码管理构建触发器BuildPost Steps 设置手工触发构建 前言 参考链…

Redis集群安全加固

本博客地址:https://security.blog.csdn.net/article/details/130692909 一、为Redis启用密码验证 默认情况下,Redis不执行任何密码身份验证。能够通过IP端口连接Redis的客户端均可以直接访问Redis中的数据。在启动Redis服务时,通过设置req…

玩转自动化操作神器n8n之(1)n8n的简介与安装

文章目录 1. 简介 2. 安装2.1. 使用npx进行安装2.2. 使用docker进行安装 2.3. 设置端口(可选) 3. 登录4. 搜索工作流 1. 简介 n8n是一款强大的工作流程自动化工具,可以自定义想要使用的功能和应用程序。n8n基于节点能够将任何工具连接在一起…

使用插件快速生成代码

使用插件快速生成代码 咋们常说,授人以鱼不如授人以渔,在这里给大家提供一些技巧性的东西,方便一些新手同学可以快速上手,同时,也提高我们的开发兴趣与开发热情! 主要讲什么呢,我们来学一学如何…

低代码信创开发核心技术(二):手撕灵活好用的Vue拖拉拽布局系统

前言 随着信息化时代的到来,软件已经成为企业和个人不可或缺的工具。然而,许多人在开发软件时遇到了各种问题,比如开发周期长、技术门槛高、成本高昂等等。为了解决这些问题,低代码平台应运而生。低代码平台是一种快速开发工具&a…

Golang每日一练(leetDay0067) 第十行、打家劫舍I

目录 195. 第十行 Tenth Line 🌟 198. 打家劫舍 I House Robber 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 195. 第十行 Tenth Line 给定一…

PySide6/PyQT多线程之 异常情况和优先级指南

前言 在PySide6/PyQT 中使用多线程时,线程的优先级和异常情况处理同样是重要的概念。 本文纯理论知识,无实操。换句话说,就是水文~~ 尽管在一般情况下我们不需要过多关注线程的优先级,但了解它的概念对于特定场景下的多线程编程仍…

Java每日一练(20230516) 最小栈、组合总和II、相同的树

目录 1. 最小栈 🌟 2. 组合总和 II 🌟🌟 3. 相同的树 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 最小栈 设计一个支持 push…

[入门必看]数据结构5.4:树、森林

[入门必看]数据结构5.4:树、森林 第五章 树与二叉树5.4 树、森林知识总览5.4.1 树的存储结构5.4.2 树、森林与二叉树的转化5.4.3 树和森林的遍历 5.4.1 树的存储结构树的逻辑结构回顾:二叉树的顺序存储如何实现树的顺序存储?树的存储1&#x…

【连续介质力学】张量的范数、各向同性和各向异性张量、同轴张量和极分解

张量的范数 张量的大小,使用Frobenius 范数: ∣ ∣ v ⃗ ∣ ∣ v ⃗ ⋅ v ⃗ v i v i (向量) ||\vec v|| \sqrt{\vec v \cdot \vec v} \sqrt{v_iv_i} (向量) ∣∣v ∣∣v ⋅v ​vi​vi​ ​&#xff…

okhttp篇2:Dispatcher

Dispatchers维护着一个线程池,3个双端队列,准备执行的AsynCall,正在执行的AsynCall,正在执行的同步Call(RealCall)。 同时规定每个Host最多同时请求5个Request,同时可最多执行64个Request。 p…

玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest

一、前言 本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。 二、下载 如果不记得网址, 直接在google里搜gtest,第一个就是。目…

Docker下Gitlab配置Let’s Encrypt证书

Docker下Gitlab配置Let’s Encrypt证书 1 参考文档2 常见问题2.1 前置条件2.2 不支持ip2.3 重复签发2.4 外网无法访问 ※3 内网穿透配置(可选)4 Gitlab 创建并配置Let’s Encrypt证书4.1 开放Let’s Encrypt签发所需端口4.2 新增存储HTTPS证书文件夹4.3 …

多态与虚函数(补)

多态与虚函数(补) 静态联编与动态联编的深层次理解多态底层原理 示例示例一示例二示例三示例四 对象与内存虚析构函数构造函数为什么不能是虚函数? 静态联编与动态联编的深层次理解 我们首先看下面一段代码 class object { private: int va…