在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;
以上是配置多數據源的幾種方法,可以根據具體需求選擇合適的方式。