Spring Boot JPA可以通过配置多个数据源来实现从同一连接添加多个数据库。下面是实现的步骤:
application.properties
或application.yml
文件中配置多个数据源的连接信息。例如,假设我们要添加两个数据库,分别为db1
和db2
,可以按照以下方式配置:# 数据源1
spring.datasource.db1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.db1.username=root
spring.datasource.db1.password=123456
spring.datasource.db1.driver-class-name=com.mysql.jdbc.Driver
# 数据源2
spring.datasource.db2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.db2.username=root
spring.datasource.db2.password=123456
spring.datasource.db2.driver-class-name=com.mysql.jdbc.Driver
@Configuration
注解和@Bean
注解来创建多个数据源的配置类。例如,创建DB1Config
和DB2Config
两个配置类:@Configuration
public class DB1Config {
@Bean
@ConfigurationProperties("spring.datasource.db1")
public DataSourceProperties db1DataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.datasource.db1")
public DataSource db1DataSource() {
return db1DataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
public LocalContainerEntityManagerFactoryBean db1EntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(db1DataSource())
.packages("com.example.db1.entity")
.persistenceUnit("db1")
.build();
}
@Bean
public PlatformTransactionManager db1TransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(db1EntityManagerFactory(builder).getObject());
}
}
@Configuration
public class DB2Config {
@Bean
@ConfigurationProperties("spring.datasource.db2")
public DataSourceProperties db2DataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.datasource.db2")
public DataSource db2DataSource() {
return db2DataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
public LocalContainerEntityManagerFactoryBean db2EntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(db2DataSource())
.packages("com.example.db2.entity")
.persistenceUnit("db2")
.build();
}
@Bean
public PlatformTransactionManager db2TransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(db2EntityManagerFactory(builder).getObject());
}
}
EntityManager
。例如,在需要使用db1
数据库的地方,可以注入EntityManager
并使用@PersistenceContext(unitName = "db1")
注解指定使用的数据源:@Repository
public class UserRepository {
@PersistenceContext(unitName = "db1")
private EntityManager entityManager;
// ...
}
通过以上步骤,我们就可以在Spring Boot JPA中从同一连接添加多个数据库。在使用时,可以根据需要注入对应的EntityManager
来操作不同的数据库。
领取专属 10元无门槛券
手把手带您无忧上云