본문 바로가기
Java/JPA

Spring JPA Multiple Databases 설정

by 평범한 개발자... 2020. 4. 13.
Spring JPA – Multiple Databases

1. 다중 DB 설정 시, 알아야 할 것

  1. 다중 DB는 Spring boot 처럼 Auto Configuration되지 않음

    • 설정파일(application.yml 또는 application.properties) 값을 읽어와서 연동 할 DB 수 만큼 Datasource를 수동 설정해야함

      • 설정파일 대신 코드로 직접 설정할 수 있는 방법도 있음
    • 주요 설정 내용

      • 리소스 경로 설정

        • Repository basePackages 경로 설정
        • Entity 경로 설정
      • DB 정보 설정(Datasource)

        • driver 이름
        • URL
        • Id/Password
      • Hibernate 설정

        • ddl-auto

        • dialect

           

  2. 설정된 다중 DB는 Repository package 명으로 구분

  3. 초기 설정이 복잡한 편이나, 천천히 살펴보면 크게 어렵지 않음

     

2. 소스코드

이 글에서는 1개의 Entity로 2개의 Database에 값을 넣는 예제로 진행합니다.

2-1. Entity

  • 두 개의 DB에서 공용으로 사용할 Entity를 생성합니다.

 

2-2. Repository

  • 서로 다른 패키지에 User Repository를 작성 (패키지가 다르다고 하여 파일명을 동일하게 하면 안됨)

 

2-3. DB Configuration

2-3-1 application.properties

  • Prefix부분은 자유롭게 입력 가능 (spring.datasource, spring.second-datasource)
  • 그 뒤에 property명은 오타가 나지 않도록 주의 (username, password, jdbcUrl)

driver class name을 설정하는 property가 빠져있는데,

jdbcUrl로 부터 driver name을 읽어와서 자동으로 설정하기 때문에 별도로 설정 하지 않아도 됨

 

2-3-2 Main Datasource

  • Master DB용 java 설정파일 생성

  • 설정 파일은 다음과 같이 구성되어 있음

    • DataSource 설정

    • EntityManagerFactory 설정

    • TransactionManager 설정

       

다중 DB를 설정할 때는, @Primary 어노테이션을 이용하여 Master가되는 Datasouce를 지정해야한다.

 

  • @ConfigurationProperties 어노테이션없이 설정하는 원시적인 방법

 

2-3-3 Second Datasource

  • 두번째 DB용 java 설정파일 생성 (설정 파일 구성은 메인과 동일함)

  • 소스코드 복붙하다가 하는 실수

    • @Primary 어노테이션은 꼭 지워야 함

 

4. Test

  • 간단한 Insert Test 코드 작성

4.1 hibernate 로그 확인

image

 

4.2 DB 데이터 확인

  • 테이블이 각 DB에 생성되었음

image

 

  • 각 DB 데이터 확인

image

 

image

반응형

댓글