"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Spring Boot 및 Spring Data JPA를 사용하여 어떻게 여러 데이터 소스에 연결할 수 있나요?

Spring Boot 및 Spring Data JPA를 사용하여 어떻게 여러 데이터 소스에 연결할 수 있나요?

2024년 10월 31일에 게시됨
검색:658

How can I use Spring Boot and Spring Data JPA to connect to multiple data sources?

Spring Boot, 여러 데이터 소스가 있는 Spring Data JPA

Spring Boot 및 Spring Data JPA를 사용하여 여러 데이터 소스에 연결할 수 있습니다. 이를 수행하려면 @EnableJpaRepositories 주석을 사용하여 저장소의 기본 패키지를 지정하고 @EnableTransactionManagement 주석을 사용하여 트랜잭션 관리를 활성화할 수 있습니다. 그런 다음 리포지토리 메서드에서 @Transactional 주석을 사용하여 각 메서드에 사용할 데이터 소스를 지정할 수 있습니다.

예를 들어 다음 코드는 두 개의 데이터 소스에 연결하도록 Spring Boot를 구성하는 방법을 보여줍니다.

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "orderEntityManager",
        transactionManagerRef = "orderTransactionManager",
        basePackages = {"com.mm.repository.customer"})
public class CustomerDbConfig {

    @Bean(name = "customerEntityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        // ...
    }

    // ...
}

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

    @Bean(name = "orderEntityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        // ...
    }

    // ...
}

이 코드는 각 데이터 소스에 하나씩 두 개의 EntityManagerFactory Bean을 생성합니다. 그런 다음 저장소 메소드의 @Transactional 주석은 각 메소드에 사용할 EntityManagerFactory를 지정합니다. 예를 들어, 다음 코드는 @Transactional 주석을 사용하여 findCustomer 메소드가 customerEntityManager Bean을 사용해야 함을 지정하는 방법을 보여줍니다.

@Repository
public interface CustomerRepository {

    @Transactional(value = "customerEntityManager")
    Customer findCustomer(Integer id);

    // ...
}

예외

여러 데이터 소스에 연결하려고 할 때 예외가 발생하는 경우 다음을 확인하는 것이 중요합니다.

  • @EnableJpaRepositories가 및 @EnableTransactionManagement 주석이 구성 클래스에 있습니다.
  • @Transactional 주석이 저장소 메소드에 있고 사용할 올바른 EntityManagerFactory Bean을 지정하는지 확인하십시오.
  • 예외를 검사하십시오. 문제의 원인을 파악하려면 자세히 메시지를 보내세요.
릴리스 선언문 이 글은 1729758348에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>
  • CSS로 텍스트 밑줄 색상을 사용자 정의하는 방법은 무엇입니까?
    CSS로 텍스트 밑줄 색상을 사용자 정의하는 방법은 무엇입니까?
    CSS를 사용하여 텍스트 밑줄 색상 사용자 정의웹 디자인에서 텍스트에 밑줄을 추가하는 것은 정보를 강조하거나 강조하는 일반적인 방법입니다. 하지만 밑줄 색상을 변경하여 독특한 느낌을 더하고 싶다면 어떻게 해야 할까요? 가능합니까?예, CSS를 사용하여 텍스트 아래 줄의...
    프로그램 작성 2024-11-08에 게시됨
  • JavaScript로 클릭재킹 방어 기술 구현
    JavaScript로 클릭재킹 방어 기술 구현
    클릭재킹과 같은 정교한 공격의 출현으로 인해 보안이 오늘날 온라인 세계의 주요 문제가 되었습니다. 공격자는 소비자가 처음에 본 것과 다른 것을 클릭하도록 속임으로써 비참한 결과를 초래할 수 있는 "클릭재킹"이라는 사악한 방법을 배포합니다. 이러한 종류...
    프로그램 작성 2024-11-08에 게시됨
  • 플로팅된 Div가 후속 Div의 크기를 조정하지 않는 이유는 무엇입니까?
    플로팅된 Div가 후속 Div의 크기를 조정하지 않는 이유는 무엇입니까?
    Float 크기가 조정되지 않는 Div의 미스터리CSS float를 사용할 때 후속 요소가 새 요소로 흘러가는 대신 왼쪽에 정렬된다고 가정합니다. 선. 그러나 제공된 예시와 같은 일부 시나리오에서는 다음 div가 첫 번째 div의 오른쪽에서 시작하는 대신 계속해서 전체...
    프로그램 작성 2024-11-08에 게시됨
  • PYTHON을 사용하여 MySQL로 데이터 가져오기
    PYTHON을 사용하여 MySQL로 데이터 가져오기
    소개 특히 테이블 수가 많은 경우 데이터베이스로 데이터를 수동으로 가져오는 것은 번거로울 뿐만 아니라 시간도 많이 소요됩니다. Python 라이브러리를 사용하면 더 쉽게 만들 수 있습니다. kaggle에서 그림 데이터세트를 다운로드하세요. 그림 데이터 ...
    프로그램 작성 2024-11-08에 게시됨
  • 필수 MySQL 연산자 및 해당 애플리케이션
    필수 MySQL 연산자 및 해당 애플리케이션
    MySQL 연산자는 정확한 데이터 조작 및 분석을 가능하게 하는 개발자를 위한 핵심 도구입니다. 값 할당, 데이터 비교 및 ​​복잡한 패턴 일치를 포함한 다양한 기능을 다룹니다. JSON 데이터를 처리하든 조건에 따라 레코드를 필터링하든 효율적인 데이터베이스 관리를 위...
    프로그램 작성 2024-11-08에 게시됨
  • 크론 작업 테스트 방법: 전체 가이드
    크론 작업 테스트 방법: 전체 가이드
    Cron 작업은 작업 예약, 프로세스 자동화, 지정된 간격으로 스크립트 실행을 위한 많은 시스템에서 필수적입니다. 웹 서버를 유지 관리하든, 백업을 자동화하든, 일상적인 데이터 가져오기를 실행하든 크론 작업은 작업을 원활하게 실행합니다. 그러나 다른 자동화된 작업과 ...
    프로그램 작성 2024-11-08에 게시됨
  • Next.js 미들웨어 소개: 예제와 함께 작동하는 방법
    Next.js 미들웨어 소개: 예제와 함께 작동하는 방법
    Nextjs의 라우팅에 대해 이야기해 보겠습니다. 오늘은 가장 강력한 미들웨어 중 하나에 대해 이야기해보겠습니다. Nextjs의 미들웨어는 서버의 요청을 가로채고 요청 흐름(리디렉션, URL 재작성)을 제어하고 인증, 헤더, 쿠키 지속성과 같은 기능을 전체적으로 향상시...
    프로그램 작성 2024-11-08에 게시됨
  • 소품 기본 사항: 1부
    소품 기본 사항: 1부
    초보자 친화적인 소품 사용법 튜토리얼입니다. 읽기 전에 구조 분해가 무엇인지, 구성 요소를 사용/생성하는 방법을 이해하는 것이 중요합니다. 속성(property)의 약자인 props를 사용하면 상위 구성 요소에서 하위 구성 요소로 정보를 보낼 수 있으며, 모든 데이터...
    프로그램 작성 2024-11-08에 게시됨
  • Hibernate는 Spring Boot와 어떻게 다른가요?
    Hibernate는 Spring Boot와 어떻게 다른가요?
    Hibernate는 Spring Boot와 어떻게 다른가요? Hibernate와 Spring Boot는 둘 다 Java 생태계에서 널리 사용되는 프레임워크이지만 서로 다른 용도로 사용되며 고유한 기능을 가지고 있습니다. 최대 절전 모드 H...
    프로그램 작성 2024-11-08에 게시됨
  • C++에서 10진수 데이터 유형을 어떻게 처리할 수 있나요?
    C++에서 10진수 데이터 유형을 어떻게 처리할 수 있나요?
    C의 십진수 데이터 유형 C는 숫자 값을 처리하기 위한 다양한 데이터 유형을 제공하지만 놀랍게도 십진수 데이터 유형은 기본적으로 지원되지 않습니다. 이는 정확한 십진수 값을 처리하거나 십진수 형식을 활용하는 시스템과 인터페이스할 때 제한이 될 수 있습니다.구현 옵션C에...
    프로그램 작성 2024-11-08에 게시됨
  • Python의 Caesar 암호화 기능이 마지막으로 이동된 문자만 표시하는 이유는 무엇입니까?
    Python의 Caesar 암호화 기능이 마지막으로 이동된 문자만 표시하는 이유는 무엇입니까?
    Python의 Caesar Cipher 함수: 암호화된 문자열Python에서 Caesar Cipher 함수를 구현할 때 최종 암호화된 텍스트가 마지막으로 이동된 문자만 표시합니다. 이 문제를 해결하려면 이 동작을 일으키는 문제를 이해해야 합니다.제공된 코드에서 루프는 ...
    프로그램 작성 2024-11-08에 게시됨
  • 4에서 PHP의 빠른 배포
    4에서 PHP의 빠른 배포
    Servbay는 개발 환경을 쉽게 구성할 수 있는 최고의 도구로 자리매김했습니다. 이 가이드에서는 PHP 8.2를 신속하고 안전하게 배포하는 방법을 시연하고 배포 프로세스를 단순화하려는 Servbay의 헌신을 강조합니다. 전제 조건 시작하기 전에 장치에 ...
    프로그램 작성 2024-11-08에 게시됨
  • AngularJS 지시문에서 대체 속성이 언제 더 이상 사용되지 않습니까?
    AngularJS 지시문에서 대체 속성이 언제 더 이상 사용되지 않습니까?
    AngularJS가 지시문에서 대체 속성을 더 이상 사용하지 않는 이유AngularJS 지시문의 대체 속성은 복잡성과 더 나은 기능의 출현으로 인해 더 이상 사용되지 않습니다. 대안. 공식 AngularJS API 문서에 따르면 향후 버전에서는 기본값이 false가 될...
    프로그램 작성 2024-11-08에 게시됨
  • JavaScript 및 jQuery에서 PHP 변수에 원활하게 액세스하려면 어떻게 해야 합니까?
    JavaScript 및 jQuery에서 PHP 변수에 원활하게 액세스하려면 어떻게 해야 합니까?
    JavaScript 또는 jQuery에서 PHP 변수에 액세스: 에코 오버로드 방지많은 개발자가 JavaScript 및 jQuery에서 PHP 변수에 액세스하는 데 어려움을 겪습니다. 전통적인 방법은 다음과 같은 PHP 태그 내의 변수를 에코하는 것입니다:<?ph...
    프로그램 작성 2024-11-08에 게시됨
  • Claude AI 활용: 저렴하고 유연한 AI 통합을 위한 비공식 API
    Claude AI 활용: 저렴하고 유연한 AI 통합을 위한 비공식 API
    Anthropic이 개발한 Claude AI는 인상적인 기능으로 AI 커뮤니티에 파장을 일으키고 있습니다. 그러나 공식 API는 많은 개발자와 중소기업에게 엄청나게 비쌀 수 있습니다. 이것이 바로 비공식 Claude AI API가 등장하여 Claude의 기능을 프로젝트...
    프로그램 작성 2024-11-08에 게시됨

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3