`

Spring Boot,Spring Data JPA多数据源支持

 
阅读更多

1 配置文件

 

Properties代码  收藏代码
  1. wisely.primary.datasource.driverClassName=oracle.jdbc.OracleDriver  
  2. wisely.primary.datasource.url=jdbc\:oracle\:thin\:@192.168.1.103\:1521\:xe  
  3. wisely.primary.datasource.username=gis  
  4. wisely.primary.datasource.password=gis  
  5.    
  6. wisely.secondary.datasource.driverClassName=oracle.jdbc.OracleDriver  
  7. wisely.secondary.datasource.url=jdbc\:oracle\:thin\:@192.168.1.103\:1522\:xe  
  8. wisely.secondary.datasource.username=gis  
  9. wisely.secondary.datasource.password=gis  

 

 

 

2 datasource配置

 

第一个数据源

 

Java代码  收藏代码
  1. @Configuration  
  2. public class DataSourcePrimaryConfig {  
  3.   
  4.     @Bean(name = "primaryDS"@Qualifier("primaryDS")  
  5.     @Primary  
  6.     @ConfigurationProperties(prefix="wisely.primary.datasource")  
  7.     public DataSource primaryDataSource(){  
  8.         return DataSourceBuilder.create().build();  
  9.     }  
  10.   
  11. }  

 

 

 

第二个数据源

 

Java代码  收藏代码
  1. @Configuration  
  2. public class DataSourceSecondaryConfig {  
  3.     @Bean(name = "secondaryDS"@Qualifier("secondaryDS")  
  4.     @ConfigurationProperties(prefix="wisely.secondary.datasource")  
  5.     public DataSource secondaryDataSource(){  
  6.         return DataSourceBuilder.create().build();  
  7.     }  
  8. }  

 

 

 

3 实体管理器及事务管理器配置

 

第一个数据源

 

Java代码  收藏代码
  1. @Configuration  
  2. @EnableTransactionManagement  
  3. @EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactoryPrimary",transactionManagerRef="transactionManagerPrimary",basePackages= { "com.wisely.demo.dao.one" })//设置dao(repo)所在位置  
  4. public class RepositoryPrimaryConfig {  
  5.       @Autowired  
  6.       private JpaProperties jpaProperties;  
  7.   
  8.       @Autowired @Qualifier("primaryDS")  
  9.       private DataSource primaryDS;  
  10.   
  11.       @Bean(name = "entityManagerPrimary")  
  12.       @Primary  
  13.       public EntityManager entityManager(EntityManagerFactoryBuilder builder) {  
  14.           return entityManagerFactoryPrimary(builder).getObject().createEntityManager();  
  15.       }  
  16.   
  17.       @Bean(name = "entityManagerFactoryPrimary")  
  18.       @Primary  
  19.       public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) {  
  20.           return builder  
  21.                   .dataSource(primaryDS)  
  22.                   .properties(getVendorProperties(primaryDS))  
  23.                   .packages("com.wisely.demo.domain.one"//设置实体类所在位置  
  24.                   .persistenceUnit("primaryPersistenceUnit")  
  25.                   .build();  
  26.       }  
  27.   
  28.       private Map<String, String> getVendorProperties(DataSource dataSource) {  
  29.           return jpaProperties.getHibernateProperties(dataSource);  
  30.       }  
  31.   
  32.       @Bean(name = "transactionManagerPrimary")  
  33.       @Primary  
  34.       PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {  
  35.           return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());  
  36.       }  
  37.   
  38. }  

 

 

 

第二个数据源

 

Java代码  收藏代码
  1. @Configuration  
  2. @EnableTransactionManagement  
  3. @EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactorySecondary",transactionManagerRef="transactionManagerSecondary",basePackages= { "com.wisely.demo.dao.two" })  
  4. public class RepositorySecondaryConfig {  
  5.       @Autowired  
  6.       private JpaProperties jpaProperties;  
  7.   
  8.       @Autowired @Qualifier("secondaryDS")  
  9.       private DataSource secondaryDS;  
  10.   
  11.       @Bean(name = "entityManagerSecondary")  
  12.       public EntityManager entityManager(EntityManagerFactoryBuilder builder) {  
  13.           return entityManagerFactorySecondary(builder).getObject().createEntityManager();  
  14.       }  
  15.   
  16.       @Bean(name = "entityManagerFactorySecondary")  
  17.       public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) {  
  18.           return builder  
  19.                   .dataSource(secondaryDS)  
  20.                   .properties(getVendorProperties(secondaryDS))  
  21.                   .packages("com.wisely.demo.domain.two")  
  22.                   .persistenceUnit("secondaryPersistenceUnit")  
  23.                   .build();  
  24.       }  
  25.   
  26.       private Map<String, String> getVendorProperties(DataSource dataSource) {  
  27.           return jpaProperties.getHibernateProperties(dataSource);  
  28.       }  
  29.   
  30.       @Bean(name = "transactionManagerSecondary")  
  31.       PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {  
  32.           return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());  
  33.       }  
  34.   
  35. }  

 

 

 

4 使用

 

此时来自不同数据库的dao(repo)可以任意在其它的bean里注入

 

 

 

Java代码  收藏代码
  1. @Controller  
  2. public class TestController {  
  3.     @Autowired  
  4.     SysRoleRepo1 sysRoleRepo1;  
  5.     @Autowired  
  6.     SysRoleRepo2 sysRoleRepo2;  
  7.     @RequestMapping("/test")  
  8.     public @ResponseBody String test(){  
  9.         System.out.println(Lists.newArrayList(sysRoleRepo1.findAll()).size());  
  10.         System.out.println(Lists.newArrayList(sysRoleRepo2.findAll()).size());  
  11.         return "ok";  
  12.     }   
  13. }  

 

分享到:
评论

相关推荐

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

    Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...

    Spring Boot使用spring-data-jpa配置Mysql多数据源

    在Spring Boot应用中,使用`spring-data-jpa`来配置MySQL多数据源是一项常见的需求,尤其是在构建大型分布式系统时,为了实现数据隔离、负载均衡或读写分离等目的。本教程将详细介绍如何在Spring Boot项目中配置多个...

    详解基于Spring Boot与Spring Data JPA的多数据源配置

    基于Spring Boot与Spring Data JPA的多数据源配置 Spring Boot作为当前最流行的Java Web框架之一,提供了许多实用的功能和配置项,然而,在实际项目中,我们经常会遇到多数据源配置的问题,例如在一个项目中需要...

    管理系统系列--基于 Spring Boot、 Spring Data JPA、 Spring Security、V.zip

    开发者可以利用Spring Boot的便利性快速搭建项目结构,Spring Data JPA简化数据访问,而Spring Security则保障了系统的安全性。为了深入了解这个管理系统,需要查看源代码和具体的配置文件,以学习它们如何协同工作...

    spring boot jpa security

    Spring Data JPA是Spring框架的一个模块,提供了对JPA的高级支持,包括自动配置、查询生成和仓库抽象层,使得数据库操作更加便捷。 Spring Security是一个功能强大的安全框架,用于保护基于Spring的应用程序。它...

    整合Spring Data JPA1

    - **多数据源支持**:可以方便地配置和管理多个数据源,实现数据隔离和读写分离。 **2. Spring Boot 整合 Spring Data JPA** - **环境搭建**:在 Maven 项目中添加相关依赖,包括 `spring-boot-starter-data-jpa`...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    此外,Spring Data JPA还支持自定义查询,允许开发者使用@Query注解编写JPQL语句。 Hibernate作为JPA的实现,是一个强大的对象关系映射(ORM)框架。它将Java对象与数据库表进行映射,使得开发者可以通过操作对象来...

    Spring Boot+Maven+Spring Data JPA+apache Shiro+Easyui实现通用用户权限管理系统

    1. **Spring Boot**: Spring Boot是Spring框架的简化版,它内置了常见的配置,如Tomcat服务器、Spring MVC、数据源等,使得开发者可以快速地搭建应用。通过“起步依赖”(Starter POMs)来引入所需的模块,如Spring ...

    基于Spring Boot+Spring Data Jpa+apache shiro+easyui+bootstrap的推酷网站

    本系统采用企业级开发标准,使用SpringBoot架构,数据访问层采用Spring Data Jpa,业务控制层采用SpringMvc,安全框架采用Shiro,实现了完整权限系统,Controller方法采用shiro注解,来实现有效的权限控制;...

    使用springboot + JPA / MyBatis 实现多数据源动态切换

    本教程将详细讲解如何使用Spring Boot结合JPA或MyBatis框架实现多数据源的动态切换。 **一、Spring Boot与JPA** 1. **Spring Boot简介**:Spring Boot是Spring Framework的一个模块,旨在简化Spring应用的初始搭建...

    4_构建一个简单的spring-boot的data jpa项目.zip

    【标题】"4_构建一个简单的spring-boot的data jpa项目.zip" 提供了一个关于创建基于Spring Boot的Data JPA项目的基本步骤。Spring Boot简化了Java应用的开发,而Data JPA是Spring Data的一个模块,它提供了对ORM...

    springBoot整合springData JPA

    **SpringBoot整合SpringData JPA** 是一个现代Java开发中的常见技术栈,它结合了Spring Boot的便捷性和Spring Data JPA的数据访问效率。Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring ...

    springboot+mysql+jpa多数据源操作源码

    在Spring Boot应用中,使用Spring Data JPA与MySQL数据库进行多数据源操作是一项常见的需求,尤其是在构建分布式系统或需要处理多个数据库的应用中。本项目"springboot+mysql+jpa多数据源操作源码"旨在提供一个示例...

    管理系统系列--基于spring boot脚手架项目,spring data jpa+Spring Boot2+bo.zip

    本项目以"管理系统系列--基于spring boot脚手架项目,spring data jpa+Spring Boot2+bo"为主题,旨在深入探讨如何利用Spring Boot、Spring Data JPA以及BO(Business Object)模式来构建高效、易维护的企业级管理...

    spring-boot-06-data-jpa.zip

    《Spring Boot整合Spring Data JPA深度解析》 在现代Java开发中,Spring Boot以其便捷的配置、快速的应用启动以及强大的生态系统赢得了广泛的认可。而在数据访问层,Spring Data JPA则是Spring框架提供的一种高效且...

    其实spring data jpa比mybatis更好用.zip_JPA mybatis

    同时,Spring Boot还支持数据源的自动配置,使得开发者可以快速连接到数据库。 **Spring Data JPA的优势** 1. **简化的查询**:使用Spring Data JPA,只需要定义接口方法名,就可以生成相应的SQL查询,减少了对SQL...

    Spring Boot1中使用JPA例子

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ``` 接下来,我们需要配置数据源。Spring Boot支持多种数据库,如MySQL、PostgreSQL等。在`application.properties`文件中,添加对应...

    spring boot多数据源配置

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...

    springdatajpa.pdf

    SpringDataJPA是Spring框架中用于简化数据持久层操作的一个模块,它基于Java持久层API(Java Persistence API,JPA)标准。在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。...

    spring data jpa简单案例

    Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复的 CRUD(创建、读取、更新、...

Global site tag (gtag.js) - Google Analytics