Spring JPA Data 多数据源
来源:互联网 发布:豪迪软件 编辑:程序博客网 时间:2024/06/14 23:45
PersistenceContext
import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Qualifier;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 com.alibaba.druid.pool.DruidDataSource;@Configurationclass PersistenceContext { @ConfigurationProperties(prefix = "r_datasource") @Primary @Bean(name="r_ds") @Qualifier("r_ds") public DataSource readDruidDataSource() { return new DruidDataSource(); } @ConfigurationProperties(prefix = "w_datasource") @Bean(name="w_ds") @Qualifier("w_ds") public DataSource writeDruidDataSource() { return new DruidDataSource(); }}
第一个数据源
package cn.test.configuration;import java.util.Map;import javax.persistence.EntityManager;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;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 org.springframework.transaction.annotation.EnableTransactionManagement;@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary", basePackages = { "cn.test.repository.read" })public class RepositoryPrimaryConfig { @Autowired private JpaProperties jpaProperties; @Autowired @Qualifier("r_ds") private DataSource r_ds; @Bean(name = "entityManagerPrimary") @Primary public EntityManager entityManager(EntityManagerFactoryBuilder builder) { return entityManagerFactoryPrimary(builder).getObject().createEntityManager(); } @Bean(name = "entityManagerFactoryPrimary") @Primary public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) { return builder.dataSource(r_ds).properties(getVendorProperties(r_ds)).packages("cn.test.entity.read") // 设置实体类所在位置 .persistenceUnit("primaryPersistenceUnit").build(); } private Map<String, String> getVendorProperties(DataSource dataSource) { return jpaProperties.getHibernateProperties(dataSource); } @Bean(name = "transactionManagerPrimary") @Primary PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject()); }}
第二个数据源
package cn.test.configuration;import java.util.Map;import javax.persistence.EntityManager;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;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 org.springframework.transaction.annotation.EnableTransactionManagement;@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactorySecondary",transactionManagerRef="transactionManagerSecondary",basePackages= { "cn.test.repository.write" })public class RepositorySecondaryConfig { @Autowired private JpaProperties jpaProperties; @Autowired @Qualifier("w_ds") private DataSource w_ds; @Bean(name = "entityManagerSecondary") public EntityManager entityManager(EntityManagerFactoryBuilder builder) { return entityManagerFactorySecondary(builder).getObject().createEntityManager(); } @Bean(name = "entityManagerFactorySecondary") public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) { return builder .dataSource(w_ds) .properties(getVendorProperties(w_ds)) .packages("cn.test.entity.write") .persistenceUnit("secondaryPersistenceUnit") .build(); } private Map<String, String> getVendorProperties(DataSource dataSource) { return jpaProperties.getHibernateProperties(dataSource); } @Bean(name = "transactionManagerSecondary") PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject()); }}
运行效果
阅读全文
0 0
- spring data jpa 配置多数据源
- Spring JPA Data 多数据源
- spring data jpa 多数据源
- Spring Boot,Spring Data JPA多数据源支持
- Spring Boot + Spring Data JPA项目配置多数据源
- spring-boot 使用 spring-data-jpa多数据源配置
- Spring Boot,Spring Data JPA多数据源支持配置
- 基于Spring Boot与Spring Data JPA的多数据源配置
- 4. Spring Boot 1.2.5,Spring Data JPA多数据源支持
- Spring Boot学习(七)之Web应用使用Spring-data-jpa多数据源配置
- jpa+spring配置多数据源
- Spring JPA多数据源配置
- jpa+spring配置多数据源
- jpa+spring配置多数据源
- jpa+spring配置多数据源
- sping boot多数据源配置_JdbcTemplate+sping data jpa
- spring boot+jpa+druid多数据源集成示例
- Spring JPA多数据库访问
- hdu 2665 Kth number(主席树)
- 没有显示器情况下,安装和使用树莓派
- 安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
- MySQL LIKE 子句
- linux内核学习路径
- Spring JPA Data 多数据源
- 匡恩网络物联网安全解决之法
- 快速排序的原理以及Java代码
- jq each实例应用;
- 单片机中的几种通信方式
- 1031: [JSOI2007]字符加密Cipher
- 1483: [HNOI2009]梦幻布丁
- 关于导入项目找不到javax.annotation.Nullable的问题
- PhotoView的简单使用(在ViewPager里面的触摸处理)