在JPA中配置多数据源的方法有以下几种:
spring.datasource.primary.url=jdbc:mysql://localhost:3306/db1
spring.datasource.primary.username=root
spring.datasource.primary.password=123456
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2
spring.datasource.secondary.username=root
spring.datasource.secondary.password=123456
然后在需要使用的地方使用@Qualifier
注解指定具体的数据源。
@Configuration
注解创建一个配置类,通过@Bean
注解创建多个数据源的Bean,并指定不同的属性。然后在需要使用的地方使用@Qualifier
注解指定具体的数据源。@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
然后在需要使用的地方使用@Qualifier
注解指定具体的数据源。
persistence.xml
文件中配置多个数据源的相关属性,然后在需要使用的地方使用@PersistenceContext
注解指定具体的数据源。<persistence-unit name="primary" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>java:/comp/env/jdbc/primary</non-jta-data-source>
...
</persistence-unit>
<persistence-unit name="secondary" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>java:/comp/env/jdbc/secondary</non-jta-data-source>
...
</persistence-unit>
@PersistenceContext(unitName = "primary")
private EntityManager primaryEntityManager;
@PersistenceContext(unitName = "secondary")
private EntityManager secondaryEntityManager;
以上是配置多数据源的几种方法,可以根据具体需求选择合适的方式。