728x90
Spring 환경에서 Database 커넥션을 설정할 때 jdbc url을 지정하게 되고 아래와 같이 기본적으로 스키마를 포함한 풀 url을 지정하게 된다.
jdbc:mysql://localhost:3306/TEST
그런데 데이터베이스 안에는 업무상 여러개의 스키마를 만들어서 사용하는 경우가 있고 위와 같이 TEST 스키마로 DB 에 접속했지만 TEST2에 있는 테이블을 Entity 로 추가해서 참조하고 싶은 경우가 있을 수 있다.
Mybatis 환경이라면 그냥 쿼리 사용시 테이블 앞에 TEST2. 를 추가해서 사용하면 되지만 jpa 환경에서는 어떻게 할까? 일단 Entity 클래스에 정의하는 @Table 어노테이션을 보면 schema 속성이 있는데 이게 아니고 catalog 속성에 스키마를 정의하면 된다.
서칭해보니 schema는 schema 기능이 있는 DB에서 매핑되고 catalog 는 catalog 기능이 있는 DB에서 매핑된다고 한다. 이게 뭔말인지는 모르겠으나 일단 Mysql 기준 우리가 아는 스키마는 catalog 에 지정해야 한다. jdbc 드라이버 스팩이라고 하니 더이상 뭐라 할말이 없다.
https://jacojang.github.io/jpa/java/hibernate/2016/12/01/jpa-chapter4-엔티티_매핑.html
https://stackoverflow.com/questions/11184025/what-are-the-jpa-table-annotation-catalog-and-schema-variables-used-for
https://hue9010.github.io/db/mysql_schema/
728x90
'Backend > JPA' 카테고리의 다른 글
No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (0) | 2022.02.14 |
---|---|
[JPA] querydsl 정리 (0) | 2022.01.03 |
[JPA] 코틀린+JPA (0) | 2021.12.24 |
[JPA] 연관관계 매핑 (0) | 2021.12.17 |
[JPA] 대량 insert, mysql insert all (0) | 2021.12.16 |