본문 바로가기

개발/DB

[DB] Entity에 catalog 옵션이 있을 경우

실무 환경에서 설계를 하다보면, DB 스키마가 분리되어 있는 경우가 있다.

특히 JPA를 사용하는 환경에서 스키마가 분리되는 경우는 그다지 권장되지는 않는 듯 하지만, 어쩔수 없는 경우도 있으니까..

@Entity
@Table(name = "my_entity", catalog = "second_schema")
public class MyEntity {...}

메인 스키마가 있는 경우 다른 스키마에 테이블이 있는 경우

Entity의 Table 어노테이션에 catalog 옵션을 주어 JPA 테이블이 해당 엔티티를 바라보도록 설정할 수 있었다.

 

문제는 테스트코드 작성시 H2 Database를 사용하고 있었는데, 기본 설정만으로는 해당 테이블을 인식하지 못해 테스트를 통과하지 못하고 있다는 것이다.

 

이 때 테스트코드의 datasource 의 url 옵션에 FALSE;INIT=create schema if not exists SECOND_SCHEMA; 옵션을 주어 해결할 수 있었다.

  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MySQL;IGNORECASE=TRUE;DB_CLOSE_ON_EXIT=FALSE;INIT=create schema if not exists SECOND_SCHEMA

 

일단 여기까지는 진행되었으나, Dbunit을 사용하는 환경에서 xml의 더미 데이터들이 여전히 테이블을 인식하지 못하고 있었다. 이 부분은 해결 후 추가하는 것으로...