SpringBoot配置JPA多数据源

7.springboot中整合Jpa多数据源 在使用Mybatis时会涉及多数据源的问题,同样,当我们使用Jpa作为持久化处理方式时,也会涉及多数据源的问题,本节我们来讲解一下Springboot如何整合Spring data Jpa多数据源。添加lomboc,web,spring data jpa, mysql依赖默认Mysql驱动时8,如果本机安装的Mysql是5,需要手动修改版本 ,修改后的依赖信息如下: 添加 Druid连接池依赖 创建好的项目结构如下:boot1和boot2application.properties中配置两个数据源 4.创 阅读详情

SpringBoot版本

不同的版本其配置方式可能有所区别,我采用的是SpringBoot2.0.4.RELEASE。

多数据源配置

application.yml配置如下:

spring:
  application:
    name: test
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  datasource:
    primary:
      jdbc-url: jdbc:mysql://127.0.0.1:3306/laboratory
      driver-class-name: com.mysql.jdbc.Driver
      username: root
      password: root
    secondary:
      jdbc-url: jdbc:mysql://127.0.0.1:3306/test
      driver-class-name: com.mysql.jdbc.Driver
      username: root
      password: root

注意:使用jdbc-url属性代替之前配置中的url属性

创建一个Spring配置类,定义两个DataSource来读取application.yml中的不同配置,在上述yaml中,spring.datasource.primary为主数据源配置,spring.datasource.secondary为第二数据源配置,代码如下:

@Configuration
public class DataSourceConfig {

    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    
}

Spring-data-jpa支持

增加对第一数据源的JPA配置

注意其中指定数据源对应的Entity实体和Repository定义的位置,用@Primary来区分主数据源,代码如下:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "entityManagerFactoryPrimary",
        transactionManagerRef = "transactionManagerPrimary",
        basePackages = {"cn.ntshare.laboratory.domain.master"}
)
public class PrimarySourceConfig {

    @Autowired
    @Qualifier("primaryDataSource")
    private DataSource primaryDataSource;

    @Primary
    @Bean(name = "entityManagerPrimary")
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
    }

    @Resource
    private Properties jpaProperties;

    @Primary
    @Bean(name = "entityManagerFactoryPrimary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {
        LocalContainerEntityManagerFactoryBean entityManagerFactory = builder
                .dataSource(primaryDataSource)
                .packages("cn.ntshare.laboratory.domain.master") //设置实体类所在位置
                .persistenceUnit("primaryPersistenceUnit")
                .build();
        entityManagerFactory.setJpaProperties(jpaProperties);
        return entityManagerFactory;
    }

    @Primary
    @Bean(name = "transactionManagerPrimary")
    public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
    }
}

增加第二数据源的JPA配置

第二数据源的配置与第一数据源配置类似,代码如下:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef="entityManagerFactorySecondary",
        transactionManagerRef="transactionManagerSecondary",
        basePackages= { "cn.ntshare.laboratory.domain.slave" }) //设置Repository所在位置
public class SecondarySourceConfig {

    @Autowired
    @Qualifier("secondaryDataSource")
    private DataSource secondaryDataSource;

    @Bean(name = "entityManagerSecondary")
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactorySecondary(builder).getObject().createEntityManager();
    }

    @Resource
    private Properties jpaProperties;

    @Bean(name = "entityManagerFactorySecondary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) {
        LocalContainerEntityManagerFactoryBean entityManagerFactory = builder
                .dataSource(secondaryDataSource)
                .packages("cn.ntshare.laboratory.domain.slave") //设置实体类所在位置
                .persistenceUnit("secondaryPersistenceUnit")
                .build();
        entityManagerFactory.setJpaProperties(jpaProperties);
        return entityManagerFactory;
    }


    @Bean(name = "transactionManagerSecondary")
    PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
    }

}

完成上述配置之后

主数据源的实体和数据访问对象位于:cn.ntshare.laboratory.domain.master

次数据源的实体和数据访问对象位于:cn.ntshare.laboratory.domain.slave

新建实体类和Repository

主数据源下创建MUser和MUserRepository

@Entity(name = "m_user")
@Getter
@Setter
@NoArgsConstructor
public class MUser {

    @Id
    @GeneratedValue
    private Integer id;

    private String username;
}
@Repository
public interface MUserRepository extends JpaRepository<MUser, Integer> {
}

次数据源下创建SUser和SUserRepository

@Entity(name = "s_user")
@Getter
@Setter
@NoArgsConstructor
public class SUser {

    @Id
    @GeneratedValue
    private Integer id;

    private String username;
}

@Repository
public interface SUserRepository extends JpaRepository<SUser, Integer> {
}

测试

略

SpringBoot整合Jpa实现多数据源 SpringBoot整合Jpa实现多数据源 前言: 最近工作中需要用到两个数据源,刚好是SpringBoot项目整合的JPA,之前有写过SpringBoo Mybatis Druid配置多数据源 的文章,不过这次是 SpringBoot JPA Hikari 配置多数据源。好了,废话不多说,直接进入正题。 首先,我这里的SpringBoot版本是<version>2.3.1.RELEASE</version>,这个很重要,如果你的版本是低于2.1.x的,可能会有些依赖不一样,导致程序 阅读详情

相关推荐

Spring Boot的多数据源配置——JPA

    之前的项目一直在用Mybatis,不过因为sql都比较复杂,所Mybatis实现起来很方便。但一些简单的增删改查却也要写sql就比较麻烦了,毕竟代码的话能少写一点是一点。于是开始打算用JPA来做一些简单的小服务。一. yml文件配置    项目就直接用STS建了,导包也直接在建项目时勾选就行。    如果只是单独的数据源的话直接配置yml使用Spring Boot的datasource配置...

JuFF_白羽的博客 1596

SpringBoot-JPA多数据源

SpringBoot-JPA多数据源

月弦YueXian 4322

Spring Boot开发——整合JPA配置多数据源

Spring Boot开发——整合JPA配置多数据源

bjzhang75的博客 1087

Spring Boot 多数据源配置(JPA)

一般一个系统至少有一个数据源,用来持久化业务数据以及查询。单个数据源的系统很常见,在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下,只需要在配置文件中简单配置下数据库连接信息就行了。除了单数据源系统,在实际工作中,还会遇到多数据源系统。

3171

Spring Boot中实现JPA多数据源配置指南

本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据源进行操作。内容涵盖了为不同的数据库配置独立数据源、实体类和对应的Repository接口,以及通过注解注入服务层并使用特...

weixin_36444661的博客 2758

Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

Spring Boot+Jpa多数据源配置Demo,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate

springboot多数据源配置 jpa_Spring Boot多数据源配置与使用

之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate和Spring-data-jpa例子分别...

weixin_33410914的博客 157

[3D检测系列-PV-RCNN] PV-RCNN实战指南:从论文解析到代码调试全流程

本文提供了PV-RCNN在3D目标检测领域的实战全流程指南。文章深入解析了其Point-Voxel融合的核心思想,并详细演示了从环境搭建、数据准备、代码复现到模型训练与调试的具体步骤,特别针对常见的报错问题给出了解决方案,帮助开发者高效掌握这一经典算法。

weixin_29189381的博客 480

springboot+jpa 配置多数据源

项目结构是。

weixin_42934205的博客 1529

PSCAD通过python调用自动化库的实现

带有python脚本的pscad自动化PSCAD通过python调用自动化库的实现前期准备实现 PSCAD通过python调用自动化库的实现 在网上搜了一圈没有找到,通过油管的一个视频学到了,这里分享一下。 前期准备 下载PSCAD 在官方文档中建议PSCADV4.6.1及以上版本 下载python python这里没注明哪些版本可用,博主下载了最新的3.8.2使用正常。 下载IDE py...

橙子的博客 5914

基于Xilinx Artix7 的FPGA高级应用 (二):千兆以太网通信(实战篇)第一期

本项目是基于Xlinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 我们先来复习一下以太网的基本通信原理: 当我们的计算机需要与局域网中另外的设备进行通信的时候,需要将数据传输到网卡进行编码,然后传输到线上,经过另一个设备的网卡解码成该设备能读取的数据。 关于以太网协议的知识在原理篇中已经讲过,不再重复,下面直接看接收代码: 首先注意我们的MAC和PHY通信选择的是GMII接口标准,发送数据一

工大技术底层人员的博客 4034

springboot 2.x jpa 多数据源的配置

springboot2.x jpa 多数据源的配置相比1.x有一点不同,下面提供一种2.x的jpa 多数据源的配置 1.配置类 PrimaryConfig import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.orm.j

haohao_ding的博客 384

TI LP87745-Q1汽车雷达PMIC评估:从硬件设计到性能测试全解析

在汽车电子和高级驾驶辅助系统(ADAS)中,电源管理单元(PMIC)是确保传感器稳定可靠运行的核心。其工作原理在于集成多路高效电源转换器(如Buck、Boost)和精密监控电路,通过数字接口实现灵活配置与实时诊断。这项技术的核心价值在于为毫米波雷达等关键负载提供低噪声、高精度、满足严格时序与功能安全(ASIL)要求的供电方案,从而提升整个感知系统的信噪比与可靠性。其典型应用场景包括自动驾驶域控制器、车载传感器融合模块等。本文以德州仪器(TI)的LP87745-Q1专用PMIC及其评估模块(EVM)为例,深入

weixin_27017211的博客 312

SpringBoot2.x JPA多数据源配置

一、配置application.yaml文件的datasource,多数据源 spring: datasource: primary: jdbcUrl: jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-...

water_3700348的博客 1408

从零开始:用Python实现AlphaZero五子棋AI(附完整代码)

本文详细介绍了如何从零开始使用Python实现AlphaZero五子棋AI。通过工程化实践,逐步构建蒙特卡洛树搜索(MCTS)、轻量化残差网络(ResNet)以及自博弈训练循环,并提供完整可运行的代码。文章旨在帮助开发者绕过复杂理论,聚焦实战,最终打造一个能够自我学习与对弈的智能体,是深度强化学习在游戏AI领域的一次完整项目实战。

weixin_29081703的博客 416

系统架构最佳实践 -- 统一身份认证系统

设计和实现一个高效、安全的统一身份认证系统需要考虑到系统架构设计、用户认证与授权、用户身份管理、安全性保障、日志记录与审计、高可用性与容错性,以及用户体验优化等多个方面。通过合理的架构设计、安全措施和用户体验优化,可以构建一个满足用户需求、提供安全可靠的身份认证服务的系统。本文将总结统一身份认证系统的架构设计与实践经验,帮助读者了解如何设计和实现一个高效、安全的统一身份认证系统。统一身份认证系统应支持详细的日志记录和审计功能。通过合理的身份认证策略和授权机制,可以确保用户身份的准确性和信息的安全性。

xiaoli8748的专栏 1709

springboot+jpa 实现不同数据库的多数据源配置(坑整理)

在搭建springboot+jpa 实现不同数据库的多数据源配置过程中会遇到很多坑, SpringBoot引入mysql源的pom.xml等的配置:https://www.jianshu.com/p/2d92620dd979 首先是多数据源配置:https://blog.youkuaiyun.com/Birds_Cerebrum/article/details/81865352 这里最终要的一个坑是:H...

flyinghe1986的博客 5812

【Bug已解决】Codex CLI 运行时出现 command not found: codex 解决方案

方案适用场景推荐指数修复 PATH 配置最常见的基础排查方向⭐⭐⭐⭐⭐检查原生二进制完整性PATH 正常但执行仍然异常⭐⭐⭐⭐统一包管理器混用多种包管理器导致混乱⭐⭐⭐⭐确认安装脚本未被跳过CI/CD 或企业策略环境⭐⭐⭐⭐排查网络下载渠道企业内网/受限网络环境⭐⭐⭐需要留意 warning 中是否涉及脚本执行失败、网络超时重试等信息,这类 warning 往往是后续问题的前兆,建议出现明显的下载/网络相关警告时就主动重新安装一次确认。Codex CLI 报。

一键难忘的博客 1万+

Spring Boot 2.x + Spring Data JPA的多数据源配置

添加多数据源的配置 先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置 spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1 spring.datasource.primary.username=root spring.datasource.primary.password=123456 spring.datasource.primary.driver-class-

Noilany 526

acados安装与调试指南:版本兼容性问题

在计算机编程领域,软件工具和库的安装与调试是每个开发者必经的挑战。最近,在安装和使用acados库时,我遇到了一个有趣的问题,这里我将详细分享我的经验和解决方案。

m0_62153576的博客 740

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot配置多数据源JPA

title toc layout categories tags date SpringBoot + Hikari +JPA 多数据源 true SpringBoot SpringBoot SpringBoot Hikari JPA 20...

Jerry 357

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

springboot jpa 配置多数据源

jpa springboot jpa 多数据源

nabi 512

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

springboot(MyBatis多数据源配置与JPA)

文章目录基于Mybatis配置多数据源SpringBoot中如何集成spring data jpa一 什么是ORM二 什么是JPA三 什么是Spring Data Jpa?四 Spring Data JPA 和 Mybatis对比五 Springboot 中如何集成spring data jpa六 Spring Data Api 核心接口七 JpaRepository接口的基本应用八 spring data jpa 自定义查询九 自定义sql十 复杂查询十一 **JpaSpecificationExcuto

zhouhe_的博客 935
上一篇: Centos 7安装Docker启动失败
下一篇: SpringBoot配置Mybatis多数据源
占位符号
博客等级 码龄10年 75粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值