Hibernate 명명 전략 persistence. xml
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Hibernate Naming Strategy는 무시됩니다.
내 응용 프로그램에서 persistence. xml을 통해 최대 절전 모드를 구성했습니다.
그리고 EnityManagerFactory를 생성하는 EntityManagerUtil 클래스를 통해 :
persistence. xml의 ImprovedNamingStrategy 및 구성 무시에서 명명 전략을 구성하려고했습니다. 그러나 작동하지 않으며 최대 절전 모드에서는 CamelCase 테이블 이름을 사용하여 새 테이블을 생성합니다.
내가 여기서 뭘 잘못하고 있는거야?
당신의 매핑은 잘 보입니다. 그래서 부트 스트랩 프로세스에서 설정에 의해 덮어 쓰기가 의심됩니다.
Hibernate 명명 전략 persistence. xml
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
최대 절전 모드 명명 전략.
나는 Spring (REST)으로 REST webservice를 구축 중이며 xml 구성없이 orm 매퍼로 최대 절전 모드를 사용하려고한다.
기본적으로 작동하도록 설정되었지만 구성 문제가 있습니다. 구성 파일에서 LocalContainerEntityManagerFactoryBean을 Bean으로 인스턴스화합니다. 다음 예제에서와 같이 hibernate. ejb. naming_strategy를 설정합니다. ->이 테이블이 존재하지 않으면 열 이름이 camelCase와 같습니다. 그러나 쿼리가 실행될 때 최대 절전 모드가 "잊어 버렸습니다" 이 명명 구성을 사용하고 under_score_attributes와 함께 다른 종류의 명명 전략을 사용하려고합니다. - 분명히 이러한 쿼리는 실패합니다. 제가 설정할 필요가있는 다른 부동산이 있습니까? 또는 cfg. xml 또는 persistence. xml을 추가하지 않고 속성을 구성하는 다른 방법이 있습니까?
HibernateJpaAutoConfiguration은 이름 지정 전략 (및 다른 모든 JPA 속성들)이 로컬 외부 설정을 통해 설정되도록합니다. 예를 들어, application. properties에서 다음을 수행하십시오.
프로그래밍 속성을 사용하여이 특정 속성을 설정해 보았습니까? 또는 패키지 루트에있는 hibernate. properties 파일? 또는 JVM 시스템 속성? 모두 여기에 설명되어 있습니다.
내 경험에 비추어 볼 때, XML을 사용하지 않는다고 주장하면 Hibernate 문제를 진단하기가 어렵다. 그 밖의 것이 없다면 적어도 설정 파일을 정의해야 할 수도 있습니다.
나는 지금 해결책을 얻었다.
JpaAutoConfiguration은 제외해야합니다. 아직도 나는 이것이 자신의 Configuration을 사용할 때 자동으로 "뒤로 물러서야"하는 것처럼 이것이 버그일지도 모른다고 생각한다.
Hibernate로 커스텀 네이밍 전략을 구현하기.
Hibernate에 익숙한 여러분 모두가 알고 있듯이, 모든 엔티티 주석이 필수는 아닙니다. 이러한 필수가 아닌 주석에는 표 및 열 주석이 포함됩니다. 그러나 이러한 특수 효과가 필요하지 않더라도 나를 퇴출시키는 것은 결코 불가능합니다. Hibernate가 명시 적으로 설정하지 않는 한 테이블과 컬럼 이름을 좋아하지 않는다.
데이터베이스 객체와 스키마 요소의 명명 규칙은 org. hibernate. cfg. NamingStrategy 인터페이스의 사용 된 구현에 의해 제어된다. Hibernate 3.6은이 인터페이스의 네 가지 구현을 가지고있다.
그러나 이러한 구현 중 다음과 같은 요구 사항을 충족시키는 것은 없습니다.
모든 문자는 소문자 여야합니다. 테이블 이름은 복수형이어야합니다. 단어는 밑줄을 사용하여 구분해야합니다.
ImprovedNamingStrategy 클래스는 거의 (내가 유일한 단점은 그것이 단 하나의 형식으로 테이블 이름을 반환한다는 것입니다) 찾고 있기 때문에 클래스 이름을 확장하고 classToTableName () 메서드를 재정 의하여 사용자 지정 명명 전략을 작성하기로 결정했습니다. 내 구현의 소스 코드는 다음과 같습니다.
다음 단계는 내 사용자 지정 명명 전략을 사용하도록 최대 절전 모드를 구성하는 것입니다. 당신이 Hibernate를 사용한다면, 당신도 할 수있다.
Hibernate Reference Documentation의 Naming Strategy 섹션 구현에 설명 된대로 Configuration 클래스의 setNamingStrategy () 메소드를 호출하여 사용자 정의 명명 전략에 대한 참조를 설정할 수 있습니다. Hibernate Reference Manual의 XML Configuration Section에 설명 된대로 Hibernate XML 설정 파일에서 hibernate. ejb. naming_strategy 프로퍼티의 값을 net. petrikainulainen. hibernate. util. CustomNamingStrategy로 설정할 수있다.
JPA를 사용한다면, Hibernate EntityManager 참조 매뉴얼의 패키징 부분에 설명 된대로 persistence. xml에서 hibernate. ejb. naming_strategy 속성 값을 net. petrikainulainen. hibernate. util. CustomNamingStrategy로 설정하여 사용 된 명명 전략을 설정할 수있다 .
구현 된 커스텀 네이밍 전략을 사용하도록 Hibernate를 구성한 후에 엔티티 클래스로부터 Table과 Column 어노테이션을 제거 할 수 있습니다 (이것은 완전히 사실이 아니지만 나중에 내 솔루션의 단점을 설명 할 것입니다). 예를 들어 Person 클래스가있는 경우 소스 코드는 다음과 같습니다.
Hibernate가 새로운 명명 전략을 사용하고 나면, Person 엔티티의 소스 코드는 다음과 같이 보일 것이다. (그러나 Hibernate는 앞의 예제에서 명시 적으로 명시된 같은 테이블과 컬럼 이름을 사용한다.)
이제 Hibernate로 커스텀 네이밍 전략을 구현하고 설정할 수있는 방법을 설명했다. 그러나이 블로그 항목에 설명 된 솔루션은 완벽하지 않습니다. 그것은 다음 단점이 있습니다 :
항상 문법적으로 올바른 테이블 이름을 생성하지는 않습니다. 예 : 복수형은 단어 엔티티가 엔티티가 아닙니다. 엔티티입니다. 이 문제는 자동으로 해결하기는 어렵지만 항상 테이블 주석을 사용하여 이러한 문제를 해결할 수 있음을 기억하십시오. 엔티티 클래스의 열에 제한을 추가하려면 여전히 열 주석을 추가해야합니다. 이것은 항상 데이터베이스 생성 스크립트를 수동으로 생성하고 데이터베이스에 제약 조건을 추가하기 때문에 문제가되지 않습니다. 그러나 Hibernate를 사용하여 데이터베이스를 생성하려면 Column 주석을 사용하여 제약 조건을 지정하거나 생성 된 데이터베이스에 필요한 제약 조건을 수동으로 추가해야합니다. 어노테이션을 사용하여 엔티티 간의 관계를 구성해야합니다. 이 문제에 대한 자동 솔루션을 만들면 조인 테이블과 열의 이름에 대해 일종의 명명 규칙을 고안해야합니다. 이것은 제가 기꺼이하지 않는 것입니다. 그러나 다른 솔루션을 염두에두면 알려주세요!
관련 게시물.
저자에 관하여.
Petri Kainulainen은 소프트웨어 개발과 지속적인 개선에 열정적입니다. Spring Framework로 소프트웨어 개발을 전문으로하며 Spring Data Book의 저자이기도합니다.
감사! 멋진 기사 :)
천만에요. 당신이 좋아한다는 소식을 듣고 기쁘게 생각합니다.
이 Petri에 대해 정말 잘 알고 있습니다. 하드 코딩 된 이름을 사용하지 않으려면 정말 간단하고 유용합니다.
이 블로그 게시물이 유용하다는 소식을 듣고 기쁘게 생각합니다. 반면 JPA 주석에 대해서는 마음이 바뀌 었습니다. 요즘에는 다른 개발자에게 유용한 문서를 제공한다고 생각하기 때문에 언제든지 추가 할 수 있습니다.
또한 작성 - 삭제 스키마 생성 전략을 사용하여 통합 테스트를 실행하는 경우 데이터베이스 작성 스크립트 및 도메인 모델에서 제한 사항을 지정해야합니다. 그렇지 않으면 프로덕션 데이터베이스와 일치하지 않는 데이터베이스에 대해 통합 테스트가 실행됩니다. 이것은 나에게 너무 위험한 것처럼 들린다.
나는 문제가있다. 내 속성 이름에 테이블 이름 접두사를 붙이려면 어떻게합니까? 속성 이름 메서드에서 이야기 이름에 액세스하는 방법을 찾지 못했습니다.
ImprovedNamingStrategy 클래스와 NamingStrategy 인터페이스의 Javadoc을 간단히 살펴 보았습니다. 이 방법은 불가능합니다 (메소드 이름으로 테이블 이름을 제공하는 몇 가지 메소드가 있지만 일반 & # 8221; 열).
Artice에 감사드립니다. 난 그냥 내 애완 동물 프로젝트에서 org. hibernate. cfg. ImprovedNamingStrategy를 사용하려고했지만이 경우 명시 적으로 조인 열 이름으로 JoinColumn을 지정해야한다는 것을 알게되었다 :-( 나는 그 전에 쓰기 :
개인 국가 국가;
그러나 지금 나는 쓸 필요가있다.
개인 국가 국가;
그리고이 기능을 사용하지 못하게합니다.
천만에요. 이 블로그 게시물이 유용하다는 소식을 듣고 기쁘게 생각합니다.
이러한 다양한 명명 전략은 실제로 약간 혼란 스럽습니다. 지금은 ImprovedNamingStrategy를 사용하고 직접 열 이름을 지정합니다. 다소 실망 스럽지만 어떻게 든이 일을하는 가장 고통스러운 방법이라고 생각합니다.
안녕 그냥 my_tableAndColumName my_table_and_column_name 수있는 솔루션을 찾고 있는데요.
나는 당신의 모범이 복수를 사용하는 것을 본다. 그러나 나는 단지 기본적인 것들만 필요로한다. 이 목표를 사용하고 도달하기위한 스프링 / 최대 절전 모드 솔루션을 알고 있습니까?
불행히도 나는 이것을 어떻게 할 수 있는지 모르겠다. 문제는 NamingStrategy 인터페이스가 열 이름을 만드는 데 사용되는 메서드에 메서드 매개 변수로 데이터베이스 테이블의 이름을 제공하지 않는다는 것입니다. 그것이 내가 할 수 없다고 생각하는 이유입니다.
전체 기사를 사용해 주셔서 감사합니다. 설명대로 구현했지만 CustomNamingStrategy () 메서드는 WAR 파일을 배포 할 때만 호출됩니다. 어떤 시점에서 어떻게 테이블 이름을 덮어 쓰려면 CustomNamingStrategy 메서드를 호출해야합니까?
DAO 클래스가 인스턴스화되고 매개 변수로 테이블 이름을 전달하기 전에 내 서비스 클래스에서 호출하고 싶습니다. 귀하의 도움을 주시면 감사하겠습니다.
내가 아는 한 자신의 코드에서 사용자 지정 명명 전략을 호출 할 수는 없습니다. Hibernate가 사용하는 명명 규칙을 변경할 때만 사용할 수있다 (즉, Hibernate는 데이터베이스 테이블과 테이블 컬럼의 이름을 생성 할 때이 컴포넌트를 사용한다).
왜 귀하의 서비스 클래스에서 그것을 호출하기를 원하십니까? 내가하고 싶은 것을 알려 주면 문제 해결에 도움이 될 것입니다.
시퀀스 테이블 이름을 사용자 정의 할 수있는 방법이 있습니까? 감사.
다음 두 옵션 중 하나를 사용하여 시퀀스 이름을 사용자 정의 할 수 있습니다.
Hibernate 주석을 사용하려면 Hibernate Identity, Sequence 및 Table (Sequence) generator라는 제목의 블로그 게시물을 확인하십시오. JPA 주석을 사용하려면 자동 생성 값이라는 기사의 시퀀스 전략 섹션을 읽어야합니다.
내가 아는 한, NamingStrategy 인터페이스는이 목적을 위해 사용할 수있는 메소드를 선언하지 않기 때문에 이것을 지원하는 명명 전략을 생성 할 방법이 없습니다.
날씨이 예제는 런타임에 엔터티 이름을 할당하는 데 사용됩니다.
아니요. 데이터베이스 테이블의 이름과 데이터베이스 열의 이름을 자동으로 만드는 데 사용됩니다.
더 나은 테스트를 작성하십시오.
마스터 스프링 프레임 워크.
신청서 작성.
최고의 자습서를 찾으십시오.
© 2010-Present Petri Kainulainen (모든 코드 샘플은 Apache License 2.0에 따라 사용이 허가되었습니다)
모든 게시물 이미지는 해당 소유자의 재산이며 재사용 할 수 없습니다.
최대 절전 모드 사용자 정의 이름 지정 전략.
명명 전략.
클라이언트의 요구에 따라, 나는 Hibernate가 외래 키 컬럼의 이름을 바꾸는 방법을 바꿀 필요가 있었다.
기본적으로 Hibernate는 참조 된 컬럼을 접미사 (예 : entity_id)로 추가하지만 참조 된 컬럼을 접두사로 추가하여 id_entity로 이름을 지정해야했습니다.
Column으로 모든 필드에 주석을 달고 name 속성을 사용하는 대신 Hibernate에서 이러한 열의 이름을 지정하는 방식을 사용자 정의하기로 결정했습니다. 이렇게하려면 사용자 지정 이름 지정 전략을 만들어야합니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
최대 절전 모드 명명 전략.
나는 Spring (REST)으로 REST webservice를 구축 중이며 xml 구성없이 orm 매퍼로 최대 절전 모드를 사용하려고한다.
기본적으로 작동하도록 설정되었지만 구성 문제가 있습니다. 구성 파일에서 LocalContainerEntityManagerFactoryBean을 Bean으로 인스턴스화합니다. 다음 예제에서와 같이 hibernate. ejb. naming_strategy를 설정합니다. ->이 테이블이 존재하지 않으면 열 이름이 camelCase와 같습니다. 그러나 쿼리가 실행될 때 최대 절전 모드가 "잊어 버렸습니다" 이 명명 구성을 사용하고 under_score_attributes와 함께 다른 종류의 명명 전략을 사용하려고합니다. - 분명히 이러한 쿼리는 실패합니다. 제가 설정할 필요가있는 다른 부동산이 있습니까? 또는 cfg. xml 또는 persistence. xml을 추가하지 않고 속성을 구성하는 다른 방법이 있습니까?
HibernateJpaAutoConfiguration은 이름 지정 전략 (및 다른 모든 JPA 속성들)이 로컬 외부 설정을 통해 설정되도록합니다. 예를 들어, application. properties에서 다음을 수행하십시오.
프로그래밍 속성을 사용하여이 특정 속성을 설정해 보았습니까? 또는 패키지 루트에있는 hibernate. properties 파일? 또는 JVM 시스템 속성? 모두 여기에 설명되어 있습니다.
내 경험에 비추어 볼 때, XML을 사용하지 않는다고 주장하면 Hibernate 문제를 진단하기가 어렵다. 그 밖의 것이 없다면 적어도 설정 파일을 정의해야 할 수도 있습니다.
나는 지금 해결책을 얻었다.
JpaAutoConfiguration은 제외해야합니다. 아직도 나는 이것이 자신의 Configuration을 사용할 때 자동으로 "뒤로 물러서야"하는 것처럼 이것이 버그일지도 모른다고 생각한다.
Hibernate로 커스텀 네이밍 전략을 구현하기.
Hibernate에 익숙한 여러분 모두가 알고 있듯이, 모든 엔티티 주석이 필수는 아닙니다. 이러한 필수가 아닌 주석에는 표 및 열 주석이 포함됩니다. 그러나 이러한 특수 효과가 필요하지 않더라도 나를 퇴출시키는 것은 결코 불가능합니다. Hibernate가 명시 적으로 설정하지 않는 한 테이블과 컬럼 이름을 좋아하지 않는다.
데이터베이스 객체와 스키마 요소의 명명 규칙은 org. hibernate. cfg. NamingStrategy 인터페이스의 사용 된 구현에 의해 제어된다. Hibernate 3.6은이 인터페이스의 네 가지 구현을 가지고있다.
그러나 이러한 구현 중 다음과 같은 요구 사항을 충족시키는 것은 없습니다.
모든 문자는 소문자 여야합니다. 테이블 이름은 복수형이어야합니다. 단어는 밑줄을 사용하여 구분해야합니다.
ImprovedNamingStrategy 클래스는 거의 (내가 유일한 단점은 그것이 단 하나의 형식으로 테이블 이름을 반환한다는 것입니다) 찾고 있기 때문에 클래스 이름을 확장하고 classToTableName () 메서드를 재정 의하여 사용자 지정 명명 전략을 작성하기로 결정했습니다. 내 구현의 소스 코드는 다음과 같습니다.
다음 단계는 내 사용자 지정 명명 전략을 사용하도록 최대 절전 모드를 구성하는 것입니다. 당신이 Hibernate를 사용한다면, 당신도 할 수있다.
Hibernate Reference Documentation의 Naming Strategy 섹션 구현에 설명 된대로 Configuration 클래스의 setNamingStrategy () 메소드를 호출하여 사용자 정의 명명 전략에 대한 참조를 설정할 수 있습니다. Hibernate Reference Manual의 XML Configuration Section에 설명 된대로 Hibernate XML 설정 파일에서 hibernate. ejb. naming_strategy 프로퍼티의 값을 net. petrikainulainen. hibernate. util. CustomNamingStrategy로 설정할 수있다.
JPA를 사용한다면, Hibernate EntityManager 참조 매뉴얼의 패키징 부분에 설명 된대로 persistence. xml에서 hibernate. ejb. naming_strategy 속성 값을 net. petrikainulainen. hibernate. util. CustomNamingStrategy로 설정하여 사용 된 명명 전략을 설정할 수있다 .
구현 된 커스텀 네이밍 전략을 사용하도록 Hibernate를 구성한 후에 엔티티 클래스로부터 Table과 Column 어노테이션을 제거 할 수 있습니다 (이것은 완전히 사실이 아니지만 나중에 내 솔루션의 단점을 설명 할 것입니다). 예를 들어 Person 클래스가있는 경우 소스 코드는 다음과 같습니다.
Hibernate가 새로운 명명 전략을 사용하고 나면, Person 엔티티의 소스 코드는 다음과 같이 보일 것이다. (그러나 Hibernate는 앞의 예제에서 명시 적으로 명시된 같은 테이블과 컬럼 이름을 사용한다.)
이제 Hibernate로 커스텀 네이밍 전략을 구현하고 설정할 수있는 방법을 설명했다. 그러나이 블로그 항목에 설명 된 솔루션은 완벽하지 않습니다. 그것은 다음 단점이 있습니다 :
항상 문법적으로 올바른 테이블 이름을 생성하지는 않습니다. 예 : 복수형은 단어 엔티티가 엔티티가 아닙니다. 엔티티입니다. 이 문제는 자동으로 해결하기는 어렵지만 항상 테이블 주석을 사용하여 이러한 문제를 해결할 수 있음을 기억하십시오. 엔티티 클래스의 열에 제한을 추가하려면 여전히 열 주석을 추가해야합니다. 이것은 항상 데이터베이스 생성 스크립트를 수동으로 생성하고 데이터베이스에 제약 조건을 추가하기 때문에 문제가되지 않습니다. 그러나 Hibernate를 사용하여 데이터베이스를 생성하려면 Column 주석을 사용하여 제약 조건을 지정하거나 생성 된 데이터베이스에 필요한 제약 조건을 수동으로 추가해야합니다. 어노테이션을 사용하여 엔티티 간의 관계를 구성해야합니다. 이 문제에 대한 자동 솔루션을 만들면 조인 테이블과 열의 이름에 대해 일종의 명명 규칙을 고안해야합니다. 이것은 제가 기꺼이하지 않는 것입니다. 그러나 다른 솔루션을 염두에두면 알려주세요!
관련 게시물.
저자에 관하여.
Petri Kainulainen은 소프트웨어 개발과 지속적인 개선에 열정적입니다. Spring Framework로 소프트웨어 개발을 전문으로하며 Spring Data Book의 저자이기도합니다.
감사! 멋진 기사 :)
천만에요. 당신이 좋아한다는 소식을 듣고 기쁘게 생각합니다.
이 Petri에 대해 정말 잘 알고 있습니다. 하드 코딩 된 이름을 사용하지 않으려면 정말 간단하고 유용합니다.
이 블로그 게시물이 유용하다는 소식을 듣고 기쁘게 생각합니다. 반면 JPA 주석에 대해서는 마음이 바뀌 었습니다. 요즘에는 다른 개발자에게 유용한 문서를 제공한다고 생각하기 때문에 언제든지 추가 할 수 있습니다.
또한 작성 - 삭제 스키마 생성 전략을 사용하여 통합 테스트를 실행하는 경우 데이터베이스 작성 스크립트 및 도메인 모델에서 제한 사항을 지정해야합니다. 그렇지 않으면 프로덕션 데이터베이스와 일치하지 않는 데이터베이스에 대해 통합 테스트가 실행됩니다. 이것은 나에게 너무 위험한 것처럼 들린다.
나는 문제가있다. 내 속성 이름에 테이블 이름 접두사를 붙이려면 어떻게합니까? 속성 이름 메서드에서 이야기 이름에 액세스하는 방법을 찾지 못했습니다.
ImprovedNamingStrategy 클래스와 NamingStrategy 인터페이스의 Javadoc을 간단히 살펴 보았습니다. 이 방법은 불가능합니다 (메소드 이름으로 테이블 이름을 제공하는 몇 가지 메소드가 있지만 일반 & # 8221; 열).
Artice에 감사드립니다. 난 그냥 내 애완 동물 프로젝트에서 org. hibernate. cfg. ImprovedNamingStrategy를 사용하려고했지만이 경우 명시 적으로 조인 열 이름으로 JoinColumn을 지정해야한다는 것을 알게되었다 :-( 나는 그 전에 쓰기 :
개인 국가 국가;
그러나 지금 나는 쓸 필요가있다.
개인 국가 국가;
그리고이 기능을 사용하지 못하게합니다.
천만에요. 이 블로그 게시물이 유용하다는 소식을 듣고 기쁘게 생각합니다.
이러한 다양한 명명 전략은 실제로 약간 혼란 스럽습니다. 지금은 ImprovedNamingStrategy를 사용하고 직접 열 이름을 지정합니다. 다소 실망 스럽지만 어떻게 든이 일을하는 가장 고통스러운 방법이라고 생각합니다.
안녕 그냥 my_tableAndColumName my_table_and_column_name 수있는 솔루션을 찾고 있는데요.
나는 당신의 모범이 복수를 사용하는 것을 본다. 그러나 나는 단지 기본적인 것들만 필요로한다. 이 목표를 사용하고 도달하기위한 스프링 / 최대 절전 모드 솔루션을 알고 있습니까?
불행히도 나는 이것을 어떻게 할 수 있는지 모르겠다. 문제는 NamingStrategy 인터페이스가 열 이름을 만드는 데 사용되는 메서드에 메서드 매개 변수로 데이터베이스 테이블의 이름을 제공하지 않는다는 것입니다. 그것이 내가 할 수 없다고 생각하는 이유입니다.
전체 기사를 사용해 주셔서 감사합니다. 설명대로 구현했지만 CustomNamingStrategy () 메서드는 WAR 파일을 배포 할 때만 호출됩니다. 어떤 시점에서 어떻게 테이블 이름을 덮어 쓰려면 CustomNamingStrategy 메서드를 호출해야합니까?
DAO 클래스가 인스턴스화되고 매개 변수로 테이블 이름을 전달하기 전에 내 서비스 클래스에서 호출하고 싶습니다. 귀하의 도움을 주시면 감사하겠습니다.
내가 아는 한 자신의 코드에서 사용자 지정 명명 전략을 호출 할 수는 없습니다. Hibernate가 사용하는 명명 규칙을 변경할 때만 사용할 수있다 (즉, Hibernate는 데이터베이스 테이블과 테이블 컬럼의 이름을 생성 할 때이 컴포넌트를 사용한다).
왜 귀하의 서비스 클래스에서 그것을 호출하기를 원하십니까? 내가하고 싶은 것을 알려 주면 문제 해결에 도움이 될 것입니다.
시퀀스 테이블 이름을 사용자 정의 할 수있는 방법이 있습니까? 감사.
다음 두 옵션 중 하나를 사용하여 시퀀스 이름을 사용자 정의 할 수 있습니다.
Hibernate 주석을 사용하려면 Hibernate Identity, Sequence 및 Table (Sequence) generator라는 제목의 블로그 게시물을 확인하십시오. JPA 주석을 사용하려면 자동 생성 값이라는 기사의 시퀀스 전략 섹션을 읽어야합니다.
내가 아는 한, NamingStrategy 인터페이스는이 목적을 위해 사용할 수있는 메소드를 선언하지 않기 때문에 이것을 지원하는 명명 전략을 생성 할 방법이 없습니다.
날씨이 예제는 런타임에 엔터티 이름을 할당하는 데 사용됩니다.
아니요. 데이터베이스 테이블의 이름과 데이터베이스 열의 이름을 자동으로 만드는 데 사용됩니다.
더 나은 테스트를 작성하십시오.
마스터 스프링 프레임 워크.
신청서 작성.
최고의 자습서를 찾으십시오.
© 2010-Present Petri Kainulainen (모든 코드 샘플은 Apache License 2.0에 따라 사용이 허가되었습니다)
모든 게시물 이미지는 해당 소유자의 재산이며 재사용 할 수 없습니다.
최대 절전 모드 사용자 정의 이름 지정 전략.
명명 전략.
클라이언트의 요구에 따라, 나는 Hibernate가 외래 키 컬럼의 이름을 바꾸는 방법을 바꿀 필요가 있었다.
기본적으로 Hibernate는 참조 된 컬럼을 접미사 (예 : entity_id)로 추가하지만 참조 된 컬럼을 접두사로 추가하여 id_entity로 이름을 지정해야했습니다.
Column으로 모든 필드에 주석을 달고 name 속성을 사용하는 대신 Hibernate에서 이러한 열의 이름을 지정하는 방식을 사용자 정의하기로 결정했습니다. 이렇게하려면 사용자 지정 이름 지정 전략을 만들어야합니다.
Comments
Post a Comment