[SPRING] 테이블 이름을 변경하는 Hibernate 명명 전략
SPRING테이블 이름을 변경하는 Hibernate 명명 전략
나는 약간의 최대 절전 모드 (version 5.1) 명명 전략에 혼란 스럽다. 즉, 테이블 이름이 바뀌었고 나는 그것을 피하고 싶다. 또한 - spring.jpa.hibernate.naming_strategy는 intelij에 따라 더 이상 사용되지 않지만, 올바르게 구성하는 방법을 찾을 수 없습니다.
application.properties에 다음과 같은 구성을 가지고 있습니다.
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.current_session_context_class=thread
첫 번째 것은 더 이상 사용되지 않는 것으로 표시됩니다.
이제 엔티티가 있습니다.
@Entity
@Table(name = "usaUploadTable", schema = "usertable201", catalog = "")
public class UsaUploadTable {
....
}
테이블 이름은 @Table (name = "") usaUploadTable과 같습니다.
이제 신청서를 실행하면
올바른 것입니다 - 그것은 최대 절전 모드가 변경되는 것과 같은 이름이 아닙니다.
최대 절전 모드에서 테이블 이름을 올바르게 사용하려면 어떻게해야합니까?
편집하다:
나는 또한 시도했다.
DefaultNamingStrategy
ImprovedNamingStrategy
그들 모두가 그것을 바꾼다.
버전 :
spring-boot-1.4.0.RELEASE
hibernate 5.1
javax-transaction-api 1.2
hibernate-validator 5.2.4
javassist 3.20
해결법
-
==============================
1.
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
그것은 나를 위해 일했다. 여기에 내가 사용하는 버전이 있습니다 :
Spring Boot (v1.4.2.RELEASE) Hibernate Core {5.0.11.Final}
-
==============================
2.문제는 spring-boot-1.4에 있습니다. 속성 (또는 무엇이든)을 변경 한 것처럼 보입니다. ImprovedNamingStrategy는 더 이상 Hibernate 5에서 작동하지 않지만 여전히 올바르게 해석되지 않았습니다. 그래서 밑줄 메서드를 사용하지 않고 새로 도입 된 클래스 인 SpringPhysicalNamingStrategy를 확장하기 위해 코드를 약간 변경했습니다.
문제는 spring-boot-1.4에 있습니다. 속성 (또는 무엇이든)을 변경 한 것처럼 보입니다. ImprovedNamingStrategy는 더 이상 Hibernate 5에서 작동하지 않지만 여전히 올바르게 해석되지 않았습니다. 그래서 밑줄 메서드를 사용하지 않고 새로 도입 된 클래스 인 SpringPhysicalNamingStrategy를 확장하기 위해 코드를 약간 변경했습니다.
package com.foo; import org.hibernate.boot.model.naming.Identifier; import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl; import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import java.io.Serializable; import java.util.Locale; public class RealNamingStrategyImpl extends org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy implements Serializable { public static final PhysicalNamingStrategyImpl INSTANCE = new PhysicalNamingStrategyImpl(); @Override public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) { return new Identifier(name.getText(), name.isQuoted()); } @Override public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) { return new Identifier(name.getText(), name.isQuoted()); } }
그리고 application.properties에서 비추천 라인을 다음으로 변경했습니다.
spring.jpa.properties.hibernate.physical_naming_strategy=<package>.RealNamingStrategyImpl
이제 엔티티 파일에서 테이블과 컬럼 이름을 정확하게 사용합니다.
-
==============================
3.PostgreSQL 및 Spring 부트 1.5.2에서 대문자를 사용하려는 경우
PostgreSQL 및 Spring 부트 1.5.2에서 대문자를 사용하려는 경우
public class CustomDatabaseIdentifierNamingStrategy extends org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy implements Serializable { public static final long serialVersionUID = 1L; public static final CustomDatabaseIdentifierNamingStrategy INSTANCE = new CustomDatabaseIdentifierNamingStrategy(); @Override public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) { return new Identifier(name.getText().toUpperCase(), true); } @Override public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) { return new Identifier(name.getText().toUpperCase(), true); } }
-
==============================
4.봄 부팅 2.0.0 및 최대 절전 모드 5
봄 부팅 2.0.0 및 최대 절전 모드 5
public class MySqlNamingStrategyImpl extends org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy implements Serializable { protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) { return false; }
}
from https://stackoverflow.com/questions/39162976/hibernate-naming-strategy-changing-table-names by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] SpringBoot를 사용하여 개발 된 REST API에서 Java Object로 매핑 할 때 JSON 페이로드 필드를 대소 문자를 구분하지 않도록한다. (0) | 2019.03.12 |
---|---|
[SPRING] Tomcat 6 메모리 누수 로그 항목 (0) | 2019.03.12 |
[SPRING] 오류를 다시 서비스 계층의보기로 전달 (0) | 2019.03.12 |
[SPRING] <form : select> 태그를지도와 함께 사용하십시오. (0) | 2019.03.12 |
[SPRING] 다른 환경을 처리하는 주석 기반 종속성 주입 (0) | 2019.03.12 |