Springboot jpa & Hibernate Naming Strategy(네이밍 전략)[IT.FARMER]
SpringBoot
에서 JPA
를 통해서 Entity
Class에 @Table
Annotation으로 DB Table 명을 아래 사진처럼 대문자로 입력했는데,
실제로 Hibernate
의 Query 실행 결과를 보니 소문자로 매핑되고 있었고,
대문자로 생성된 Table과 매핑이 안되고 있었다.
그래서 application.properties
에서 spring.jpa.hibernate.ddl-auto=create
로 설정하고,
DB Schema를 확인해보니 소문자 Table이 생성되어있는걸 확인했다.
나는 핵심 문구로 JPA
, Entity
, Table
, UPPER
, NOTWORKING
등의 검색어로 Google 신께 신탁했고, 원인을 발견했다.
해당 원인은 Spring Boot
의 DB Physical Naming Strategy
때문이었다.
Spring Boot
의 기본 DB Physical Naming 전략은 아래와 같았다.
모든 도트는 밑줄로 대체, Camel Case 대문자는 밑줄로 대체, 모든 테이블은 소문자로 구성
Spring Boot
의 Physical Naming Strategy
를,
hibernate
의 Physical Naming Strategy
로 변경하여 해결했다.
hibernate
의 PhysicalNamingStrategyStandardImpl
전략은,
설정한 변수 이름을 그대로 사용하여,
@Table
에서 지정한 설정대로 그대로 사용할 수 있다.
application.properties
에 아래 설정을 추가해주면 된다.
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
설정 변경후, 정상적으로 대문자로 Query가 생성되어 정상적으로 매핑되었다.
오늘도 해결 완료 :) 🙆🏻♂️