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

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1533

springboot+jpa 配置多数据源

项目结构是。

weixin_42934205的博客 1529

关键词‖旋变传感器

旋转变压器(以下简称旋变)安装在永磁同步驱动电机的非传动端,其作用是检测转子的位置和速度。目前,通常采采用结构简单、坚固耐用、环境适应性好的磁阻式旋变作为位置传感器。

m0_72345077的博客 2152

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

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

嵌入式开发工程师笔试面试指南-Linux驱动

linux驱动

weixin_43491077的博客 473

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

9.27华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

9.26华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

算法大师! 503

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1405

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

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

wo12369874的博客 1701

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

《AgentScope-Java 深入浅出教程》第2章 环境搭建与第一个智能体

创建// 【导入说明】/*** 时间相关工具类* 工具类是普通的 Java 类,通过注解声明为工具。* 智能体可以根据用户需求自动调用这些工具。*/// 【工具定义】获取当前时间@Tool(name = "get_current_time", // 工具名称:LLM 看到的名称description = "获取指定时区的当前时间" // 工具描述:帮助 LLM 理解何时使用// 【参数定义】// @ToolParam 的 name 属性是必需的!

步子哥的博客 417

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot配置多数据源JPA

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

Jerry 357

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

springboot jpa 配置多数据源

jpa springboot jpa 多数据源

nabi 512

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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、付费专栏及课程。

余额充值