>  기사  >  Java  >  Spring Boot에서 여러 Spring 데이터 JPA 리포지토리를 다른 데이터 소스에 연결하는 방법은 무엇입니까?

Spring Boot에서 여러 Spring 데이터 JPA 리포지토리를 다른 데이터 소스에 연결하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 21:35:31920검색

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>

애플리케이션(메인 클래스):

메인 애플리케이션 클래스에서 다음을 확인하세요. 필요한 모든 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>

문제 해결:

빈 누락 또는 중복과 관련된 예외가 발생하는 경우 다음을 확인하세요. :

  • 구성 클래스의 Bean 정의가 고유합니다.
  • 각 저장소의 기본 패키지가 정확합니다.
  • 데이터 소스 속성이 애플리케이션에서 올바르게 구성되었습니다. .properties.
  • 각 @Transactional 주석은 해당 데이터 소스에 대한 올바른 트랜잭션 관리자를 지정합니다.

위 내용은 Spring Boot에서 여러 Spring 데이터 JPA 리포지토리를 다른 데이터 소스에 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.