springboot2.x jpa接入多数据源
环境:springboot 2.1.4
数据源引入方式
- 数据源一
- @Configuration
- @EnableTransactionManagement
- @EnableJpaRepositories(
- entityManagerFactoryRef = "entityManagerFactoryPrimary",
- transactionManagerRef = "transactionManagerPrimary",
- basePackages = {"com.xxj.primary.repository"}
- )
- public class SourceDataConfig {
- @Autowired
- private HibernateProperties hibernateProperties;
- @Autowired
- private JpaProperties jpaProperties;
- private Map<String, Object> getVendorProperties() {
- return hibernateProperties.determineHibernateProperties(
- jpaProperties.getProperties(), new HibernateSettings()
- );
- }
- @Bean(name = "primaryDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.primary") # 配置数据源获取的涞源
- public DataSource primaryDataSource(){
- return DataSourceBuilder.create().build();
- }
- @Bean(name = "entityManagerFactoryPrimary")
- public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("primaryDataSource") DataSource dataSource) {
- return builder.dataSource(dataSource)
- .properties(getVendorProperties())
- .packages("com.xxj.primary.model")
- .persistenceUnit("primaryPersistenceUnit")
- .build();
- }
- @Bean(name = "transactionManagerPrimary")
- public PlatformTransactionManager propertyTransactionManager(
- @Qualifier("entityManagerFactoryPrimary") EntityManagerFactory propertyEntityManagerFactory) {
- return new JpaTransactionManager(propertyEntityManagerFactory);
- }
- }
- 数据源二
- @Configuration
- @EnableTransactionManagement
- @EnableJpaRepositories(
- entityManagerFactoryRef = "entityManagerFactorySecond",
- transactionManagerRef = "transactionManagerSecond",
- basePackages = {"com.xxj.second.repository"}
- )
- public class SecondDataConfig {
- @Autowired
- private HibernateProperties hibernateProperties;
- @Autowired
- private JpaProperties jpaProperties;
- private Map<String, Object> getVendorProperties() {
- Map<String, Object> map = hibernateProperties.determineHibernateProperties(
- jpaProperties.getProperties(), new HibernateSettings());return map;
- }
- @Primary
- @Bean(name = "secondDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.second")
- public DataSource targetDataSource(){
- return DataSourceBuilder.create().build();
- }
- @Primary
- @Bean(name = "entityManagerFactorySecond")
- public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("secondDataSource") DataSource dataSource) {
- return builder.dataSource(dataSource)
- .properties(getVendorProperties())
- .packages("com.xxj.second.model")
- .persistenceUnit("targetPersistenceUnit")
- .build();
- }
- @Primary
- @Bean(name = "transactionManagerSecond")
- public PlatformTransactionManager propertyTransactionManager(
- @Qualifier("entityManagerFactorySecond") EntityManagerFactory propertyEntityManagerFactory) {
- return new JpaTransactionManager(propertyEntityManagerFactory);
- }
- }
数据源配置
- spring.datasource.primary.jdbc-url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&requireSSL=false
- spring.datasource.primary.username = root
- spring.datasource.primary.password = 1234567
- spring.datasource.primary.driver-class-name = com.mysql.jdbc.Driver
- spring.datasource.second.jdbc-url = jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&rewriteBatchedStatements=true
- spring.datasource.second.username = root
- spring.datasource.second.password = 1234567
- spring.datasource.second.driver-class-name = com.mysql.jdbc.Driver
springboot 2.x版本jpa多数据源引入跟1.x版本有些不太一样,还需要额外注意。
- 获取jpa配置的方式
- 数据源配置为jdbc-url
要注意:packages不能引用相同的model,否则会导致数据库卡死。
springboot2.x jpa接入多数据源的更多相关文章
- springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用
springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...
- Springboot2 jpa druid多数据源
package com.ruoyi; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans ...
- (四)SpringBoot2.0基础篇- 多数据源,JdbcTemplate和JpaRepository
在日常开发中,经常会遇到多个数据源的问题,而SpringBoot也有相关API:Configure Two DataSources:https://docs.spring.io/spring-boot ...
- 6_1.springboot2.x整合JDBC与数据源配置原理解析
1.引言 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,x ...
- grafana接入zabbix数据源
一.grafana介绍 grafana是开源免费的应用数据可视化仪表盘,由于zabbix本身对监控数据可视化并不侧重,所以大多使用第三方数据可视化工具来做大屏.下面向小伙伴们介绍grafana接入za ...
- springboot2.0动态多数据源切换
摘要:springboot1.x到springboot2.0配置变化有一点变化,网上关于springboot2.0配置多数据源的资料也比较少,为了让大家配置多数据源从springboot1.x升级到s ...
- spring boot 整合JPA多数据源
上个文章介绍了spring boot在使用Mybatis持久化技术的时候如何使用多数据源,今天再补充一个使用spring data jpa实现多数据源的使用情况,JPA是一套数据库持久化规范,或者称之 ...
- springboot2多数据源完整示例
springboot2 + mybatis + mysql + oracle + sqlserver多数据源的配置 相信很多朋友在开发的时候,可能会碰到需要一个项目,配置多个数据源的需求,可能是同一种 ...
随机推荐
- D3.js绘制 颜色:RGB、HSL和插值 (V3版本)
颜色和插值 计算机中的颜色,常用的标准有RGB和HSL. RGB:色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加来得到额各式各样的颜色.三个通道的值得范围都 ...
- D3.js(v3)+react 制作 一个带坐标与比例尺的散点图 (V3版本)
上一章做了柱形图,https://www.cnblogs.com/littleSpill/p/10835041.html 这一章做散点图. 散点图(Scatter Chart),通常是一横一竖 ...
- day04 mysql单表查询 多表查询 pymysql的使用
day04 mysql pymysql 一.单表查询 1.having过滤 一般用作二次筛选 也可以用作一次筛选(残缺的: 只能筛选select里面 ...
- vue之自定义指令
1.自定义指令的作用 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍 ...
- Java用集合实现斗地主发牌
本文以java双列集合HashMap为核心实现发牌操作: 思路: 1.准备牌:创建一个Map集合,存储牌的索引和组装好的牌 创建一个lis ...
- bzoj1061题解
[解题思路] 设类型i的志愿者,即第Si天~第Ti天工作的志愿者,共招募xi个,于是有不等式组Σxj≥Ai(Sj≤i≤Tj). 这样,题目就变成了求一组满足一次不等式组的xi,使ΣCixi最小,即标准 ...
- 20180713NOIP模拟赛
20180713NOIP模拟赛 T1:动物园 zoo.cpp 2s [题目描述] 给定一张图,点有点权,求每个点到其他所有点中所有点的权值最小值之和. [思路] \(50pts\)做法:对于每个点跑一 ...
- 牛客多校第九场 D Knapsack Cryptosystem 背包
题意: 给你32个物品,给定一个容积,让你恰好把这个背包装满,求出装满的方案 题解: 暴力计算的话,复杂度$2^{32}$肯定会炸,考虑一种类似bsgs的算法,先用$2^{16}$的时间遍历前一半物品 ...
- JVM内核-原理、诊断与优化学习笔记(三):常用JVM配置参数
文章目录 Trace跟踪参数 -verbose:gc (打开gc的跟踪情况) -XX:+printGC(打开gc的log开关,如果在运行的过程中出现了gc,就会打印出相关的信息.) -XX:+Prin ...
- webpack3
6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...