首页 > Java > java教程 > 如何在 Spring Boot 中将多个 Spring Data JPA 存储库连接到不同的数据源?

如何在 Spring Boot 中将多个 Spring Data JPA 存储库连接到不同的数据源?

Mary-Kate Olsen
发布: 2024-10-24 21:35:31
原创
996 人浏览过

How to Connect Multiple Spring Data JPA Repositories to Different Data Sources in Spring Boot?

Spring Boot、具有多个数据源的 Spring Data JPA

使用 Spring Boot 和 Spring Data JPA 可以将多个存储库连接到不同的数据源。引用的博客文章提供了解决方案,但这里有更详细的方法:

配置:

为每个数据源创建单独的配置类。以下是两个数据源的示例:

CustomerDbConfig(第一个数据源)

<code class="java">@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "customerEntityManager",
        transactionManagerRef = "customerTransactionManager",
        basePackages = {"com.mm.repository.customer"})
public class CustomerDbConfig {

    // Bean definitions for data source, entity manager factory, and transaction manager for first data source
}</code>
登录后复制

OrderDbConfig(第二个数据源)

<code class="java">@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "orderEntityManager",
        transactionManagerRef = "orderTransactionManager",
        basePackages = {"com.mm.repository.order"})
public class OrderDbConfig {

    // Bean definitions for data source, entity manager factory, and transaction manager for second data source
}</code>
登录后复制

实体:

为每个数据源定义实体(模型),例如:

<code class="java">@Entity
@Table(name = "customer")
public class Customer {

    // ...
}

@Entity
@Table(name = "order")
public class Order {

    // ...
}</code>
登录后复制

存储库:

为每个实体创建存储库,例如:

<code class="java">public interface CustomerRepository extends JpaRepository<Customer, Integer> {}

public interface OrderRepository extends JpaRepository<Order, Integer> {}</code>
登录后复制

Application(主类):

在主应用程序类中,确保创建了所有必需的 Bean,并设置了 Spring 应用程序上下文。

<code class="java">@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}</code>
登录后复制

属性:

在 application.properties 文件中配置两个数据源,包括详细信息,例如 URL、用户名、密码和驱动程序类名称。

<code class="properties"># Customer Data Source
spring.datasource.primary.url=...
spring.datasource.primary.username=...
spring.datasource.primary.password=...
spring.datasource.primary.driverClassName=...

# Order Data Source
spring.datasource.secondary.url=...
spring.datasource.secondary.username=...
spring.datasource.secondary.password=...
spring.datasource.secondary.driverClassName=...</code>
登录后复制

故障排除:

如果遇到与丢失或重复的 beans 相关的异常,请确保:

  • 配置类中的bean定义是唯一的。
  • 每个存储库的基础包都是正确的。
  • 数据源属性在应用程序中配置正确.properties。
  • 每个 @Transactional 注释为相应的数据源指定正确的事务管理器。

以上是如何在 Spring Boot 中将多个 Spring Data JPA 存储库连接到不同的数据源?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板