Springboot jpa & Hibernate Naming Strategy 전략
어느날 부터인가 컬럼명이 카멜케이스로 나오고 있다. 왜이러지?
Springboot 특정 버전 이상부터 프로퍼티 설정이 변경되었다.
프로젝트에 대소문자 구별이 있으면 추후에도 문제가 생길 여지가 있어 모두 소문자로 사용하기 위한 전략을 택했다.
ImprovedNamingStrategy 이용시 카멜 케이스를 언더스코어 버전으로 변경해준다.
Spring Boot 디폴트는 org.springframework.boot.orm.jpa.SpringNamingStrategy이다.
SpringNamingStrategy는 ImprovedNamingStrategy 을 상속한 클레스이다.
Hibernate 4
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
Hibernate 5
*Application Properties 버전
# 논리(설명)
spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
# 물리(영문, 테이블명)
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
*java configuration 버전
hibernateProperties.setProperty("hibernate.physical_naming_strategy" , "org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy");
hibernateProperties.setProperty("hibernate.implicit_naming_strategy" , "org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy");
82.6 Configure Hibernate Naming Strategy
Hibernate는 두 개의 다른 명명 전략 을 사용 하여 객체 모델에서 이름을 상응하는 데이터베이스 이름으로 매핑한다. 물리적 구현과 암시 적 전략 구현의 정규화 된 클래스 이름은 각각 spring.jpa.hibernate.naming.physical-strategyand spring.jpa.hibernate.naming.implicit-strategy속성 을 설정하여 구성 할 수 있습니다 . 또는 응용 프로그램 컨텍스트에서 ImplicitNamingStrategy또는 PhysicalNamingStrategyBean을 사용할 수있는 경우 Hibernate는이를 사용하도록 자동으로 구성됩니다.
기본적으로 스프링 부트는 물리적 이름 지정 전략을 사용하여 구성합니다 SpringPhysicalNamingStrategy. 이 구현은 Hibernate 4와 같은 테이블 구조를 제공한다 : 모든 도트는 밑줄로 대체되고 낙타의 대문자는 밑줄로 대체된다. 기본적으로 모든 테이블 이름은 소문자로 생성되지만 스키마에 필요하면 해당 플래그를 무시할 수 있습니다.
예를 들어 TelephoneNumber엔티티가 telephone_number테이블에 매핑됩니다 .
만약 당신이 Hibernate 5의 디폴트를 대신 사용하고 싶다면, 다음 프로퍼티를 설정한다 :
# 기본 변수이름을 그대로 이용한다.
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
전략 선택 (범위)
SpringPhysicalNamingStrategy(Default)
=> camel case를 underscore 형태로 변경
PhysicalNamingStrategyStandardImpl
=> 변수 이름을 그대로 사용
결론
개인적으로는 camel case를 underscore 형태를 선호한다. (SpringPhysicalNamingStragey)
'Spring > Spring Boot' 카테고리의 다른 글
Spring Cloud Config (0) | 2020.06.22 |
---|---|
Spring devtools restart 파일 감지 (0) | 2018.08.31 |
Spring boot Swagger (0) | 2017.08.31 |
Spring Boot mobile project 에 tiles 적용 (0) | 2017.02.03 |
Spring boot (0) | 2016.07.08 |