
이 Entity는

이와 같은 lowerCarmelCase를 lower_snake_case로 변환하여 테이블을 생성합니다.
MySQL같은 경우는 쿼리를 날릴 때 두가지 설정인 경우가 있습니다. 문자의 대소문자를 확실히 구분하는 설정과 그렇지 않은 설정
예를들어,SELECT team_id FROM team;과SELECT TEAM_ID FROM TEAM;을 구분하여 조회하는 설정(두 쿼리의 결과가 다른)과 그렇지 않은(두 쿼리의 결과가 같은)설정입니다. 저희 DB설정은 전자인 상황이었습니다.
새로운 전략클래스를
SpringPhysicalNamingStrategy를 상속받아 Custom하여 설정값으로 물려주는 방법
SpringPhysicalNamingStrategy
클래스를 잠시 들어가봅니다. 들어가서 소스를 보게 되면 위에서 말한 기본전략이 구현되어있는 부분을 보실 수 있습니다.

public class UpperCaseNamingStrategy extends SpringPhysicalNamingStrategy {
@Override
protected Identifier getIdentifier(String name, boolean quoted, JdbcEnvironment jdbcEnvironment) {
return new Identifier(name.toUpperCase(), quoted); // 파라미터로 넘어온 name값을 대문자화 시킵니다.
}
}
UpperCaseNamingStrategy 클래스를 만듭니다.참고로 파라미터로 넘어오는 name의 값은 아래 그림과 같습니다.
OrderItem 이란 클래스를 Order_Item으로 만들어 버리는군요
spring:
jpa:
hibernate:
naming:
physical-strategy: web.common.strategy.UpperCaseNamingStrategy # 커스텀클래스 패키지
이렇게 설정 후에 다시 로그를 보시면

저희가 원한대로 UPPER_SNAKE_CASE가 적용된 모습을 볼 수 있습니다.
참고사이트
1. https://www.baeldung.com/spring-data-jpa-custom-naming
2. https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/howto-data-access.html#howto-configure-hibernate-naming-strategy