springboot jpa 配置多数据源
jpa 多数据源配置 多个 mysql 数据库配置
springboot jpa 配置多数据源其实也并不难,只需要在 properties 或者 yml中简单配置并在项目中引入配置即可。
下面以 yml 为例:
(1)配置2个数据源 one 和 two
spring:datasource:one:url: jdbc:mysql://127.0.0.1:3306/db1?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&zeroDateTimeBehavior=convertToNullusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcetwo:url: jdbc:mysql://127.0.0.1:3306/db2?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&zeroDateTimeBehavior=convertToNullusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcejpa:database: mysqlhibernate:ddl-auto: update
(2)创建数据源配置
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;/*** @author Guihong.Zhang* @since 2021-04-08 11:01**/
@Configuration
public class DataSourceConfig {@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource.one")DataSource dsOne(){return DruidDataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.two")DataSource dsTwo(){return DruidDataSourceBuilder.create().build();}
}
(3)jpa分别配置2个数据源
@EnableJpaRepositories(basePackages = “repository 包名”)
builder.dataSource(dsOne).packages(“实体类包名”)
分别对应两个数据库,不同的包下的代码会连接不同的数据库,包括自动建表和CRUD。
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.annotation.Resource;
import javax.sql.DataSource;/*** @author Guihong.Zhang* @since 2021-04-08 11:04**/
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository.one",entityManagerFactoryRef = "localContainerEntityManagerFactoryBean1",transactionManagerRef = "platformTransactionManager1")
public class JpaConfigOne {@Resource@Qualifier("dsOne")DataSource dsOne;@ResourceJpaProperties jpaProperties;@Resourceprivate HibernateProperties properties;@Bean@PrimaryLocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean1(EntityManagerFactoryBuilder builder) {return builder.dataSource(dsOne).properties(jpaProperties.getProperties()).persistenceUnit("pu1").packages("com.test.entity.one").properties(properties.determineHibernateProperties(jpaProperties.getProperties(), newHibernateSettings())).build();}@BeanPlatformTransactionManager platformTransactionManager1(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(localContainerEntityManagerFactoryBean1(builder).getObject());}
}
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.annotation.Resource;
import javax.sql.DataSource;/*** @author Guihong.Zhang* @since 2021-04-08 11:09**/
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository.two",entityManagerFactoryRef = "localContainerEntityManagerFactoryBean2",transactionManagerRef = "platformTransactionManager2")
public class JpaConfigTwo {@Resource@Qualifier("dsTwo")DataSource dsTwo;@ResourceJpaProperties jpaProperties;@Resourceprivate HibernateProperties properties;@BeanLocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean2(EntityManagerFactoryBuilder builder) {return builder.dataSource(dsTwo).properties(jpaProperties.getProperties()).persistenceUnit("pu2").packages("com.test.entity.two").properties(properties.determineHibernateProperties(jpaProperties.getProperties(), newHibernateSettings())).build();}@BeanPlatformTransactionManager platformTransactionManager2(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(localContainerEntityManagerFactoryBean2(builder).getObject());}
}
springboot jpa 配置多数据源相关推荐
- SpringBoot JPA配置多数据源(同类型库)教程
SpringBoot项目配置多数据源主要分为以下个步骤: 确定好所连接的数据库的资源(包括url username password) 将两个库的信息写入到配置文件中(application.yaml ...
- springboot jpa 配置多数据源报错解决 Consider defining a bean named ‘entityManagerFactory‘
版本 springboot 2.6.x 现象 jpa配置多数据源后启动报错 Consider defining a bean named 'entityManagerFactory' 解决 方法1:将 ...
- springboot + JPA 配置双数据源
一.首先配置application.yml文件设置主从数据库 spring:servlet:multipart:max-file-size: 20MBmax-request-size: 20MBpro ...
- springboot+jpa配置多数据源(Oracle+SqlServer)
本贴主要讲解配置多数据源 springboot+jpa的整合需要自行准备好 1.maven中要导入Oracle和SqlServer的jar包 <dependency><groupId ...
- SpringBoot+ElasticSearch7.x+JPA配置多数据源
SpringBoot+ElasticSearch7.x+JPA配置多数据源 这里分为测试环境配置和正式环境配置,大体相差无几 ESTestConfig 1 @Configuration2 @Confi ...
- springboot+jpa+mybatis 多数据源支持
springboot+jpa+mybatis 多数据源支持 配置dataSource import org.springframework.beans.factory.annotation.Quali ...
- SpringBoot JPA 配置多个数据库
SpringBoot JPA 配置多个数据库 一.application.yml : 二.创建一个SpringBoot配置类 三.primary数据源的JPA配置 四.secondary数据源的JPA ...
- SpringBoot+SpringDataJpa配置双数据源SqlServer和Mysql
有时候项目中会遇到需要配置双数据源的情况,到SpringBoot2.0版本后和之前配置双数据源的方法有些区别,这里我用的SpringBoot版本是2.0.3,废话不多说,给出主要步骤: 一.项目依赖p ...
- springboot2+JPA 配置多数据源(不同类型数据库)
注意:看此篇文章之前,springboot+jpa的配置环境应搭建好,不会搭可以自行百度.本文章主要讲述配置JPA多数据源. 1.数据源配置文件 application.properties # 数据 ...
最新文章
- 利用SurfaceView显示正弦曲线,仿造示波器
- SoapUI:mock service的简单使用
- PG通用(常用)功能
- C++实现最大堆最小堆
- 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元
- 编写下载服务器。 第五部分:油门下载速度
- Win10如何设置IE为默认浏览器
- 例子---JS无缝轮播图
- document.body 与 document.documentElement区别介绍
- 在SQL Server中创建用户角色及授权(使用SQL语句)
- 高性能MySQL读书笔记 (五)
- 清华大学操作系统OS学习(四)——物理内存管理:连续内存分配
- 小程序js车牌号手机号正则表达
- 广数25i系统倒刀回刀m代码_广数系统编程实例精选
- oracle中between函数用法,Oracle常用函数使用介绍
- jsp案例分析(二)-聊天室-2-逆向建模
- python 三次样条_python实现三次样条插值
- MySQL-多表操作
- Safe3 Web漏洞扫描系统 6.1修正版(蜘蛛爬行)
- 面向对象:找个温暖的人一起慢慢变老