JPA Entity Table 대소문자 네이밍 에러

문제 발생

JPA를 통해 Entity를 생성할 때 name 속성으로 "USER_TB" 이렇게 대문자로 지정해줬는데
서버를 실행하고 나니 'user_tb'을 찾을 수 없다는 에러가 발생했다.
뭔가 이상해서 ddl-auto를 create로 지정해서 DB에 Table이 어떻게 생성됐는지 확인해 봤는데
user_tb로 소문자로 이루어진 테이블이 추가로 생겼다.

 

원인 분석

이에 관해 google에 검색해본 결과 Spring boot의 DB Physical Naming Strategy이 원인이었다.
DB Physical Naming Strategy는 모든 테이블 명을 소문자로 작성하고, 카멜 케이스 대문자는 밑줄로 대체하는 전략이다.

 

해결

아래 코드를 통해 네이밍 전략을 변수 이름을 그대로 사용하도록 바꿔주었다.

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl