[JPA & Hibernate Naming Strategy] CamelCase -> 'SNAKE_CASE & 대문자' 만들기

ASHAPPYASIKNOW·2022년 8월 24일
2
post-thumbnail

기본전략

physical_naming_strategy

org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

Spring에서 제공하는 CamelCaseToUnderscoresNamingStrategy (기존: SpringPhysicalNamingStrategy) 전략

  • CamelCase를 snake_case로 변경 한다.
  • 모든 문자를 소문자로 변경 한다.
> select t.team_id, t.name from tb_team t where t.team_id = 1;

SNAKE_CASE & 대문자 만들기

Class 만들기

CamelCaseToSnakeAndUpperCaseStrategy.java

  • CamelCaseToUnderscoresNamingStrategy class를 상속한다.
  • getIdentifier 함수를 override 한다.
  • toLowerCase() -> toUpperCase()로 변경
package me.kevin.configuration;

import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;

import java.util.Locale;

public class CamelCaseToSnakeAndUpperCaseStrategy extends CamelCaseToUnderscoresNamingStrategy {
    @Override
    protected Identifier getIdentifier(String name, final boolean quoted, final JdbcEnvironment jdbcEnvironment) {
        if ( isCaseInsensitive( jdbcEnvironment ) ) {
            name = name.toUpperCase( Locale.ROOT );
        }
        return new Identifier( name, quoted );
    }
}

적용 하기

변경 전

  jpa:    
    properties:
      hibernate:                
        physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
        // ... 또는 
        physical_naming_strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
               

변경 후

  jpa:    
    properties:
      hibernate:                
        physical_naming_strategy: me.kevin.configuration.CamelCaseToSnakeAndUpperCaseStrategy

확인

적용 전

> select t.team_id, t.name from tb_team t where t.team_id = 1;

적용 후

> select t.TEAM_ID, t.NAME from TB_TEAM t where t.TEAM_ID = 1;
profile
36.9 It's good time to start something new

0개의 댓글