반응형
시퀀스와 자동 증분에서 모두 작동하도록 @GeneratedValue를 사용하는 방법이 있습니까?
저는 MySQL, MariaDB 및 Oracle과 같은 다양한 RDBMS를 사용하여 여러 환경에 배포해야 하는 애플리케이션을 개발하고 있습니다.이는 다양한 ID 생성 모드(자동 증분 대 시퀀스)를 의미합니다.
JPA는 RDBMS로부터의 추상화를 허용해야 하는데, 자동증분과 시퀀스 모두에서 작동할 수 있도록 필드를 어떻게 구성해야 할지 모르겠습니다.
// Auto-increment
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// Sequence
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
참고로 제가 답을 찾았는데 몇몇 회사들도 같은 어려움을 겪고 있는 것 같습니다.현재 여기에서 답변을 사용할 수 있습니다.
주요 아이디어는 다음과 같습니다.
- 를 사용하여 엔티티를 설계합니다.
SEQUENCE
생성 전략; - Java 기반 주석 매핑을 재정의하는 JPA XML 매핑 파일을 제공합니다.
- MySQL(또는 기타 시퀀스 비호환 RDBMS)로 실행할 때 이 매핑 파일을 로드합니다.
이는 다음과 같은 이유로 가능합니다.
XML 메타데이터를 이러한 주석의 대안으로 사용하거나 주석을 재정의하거나 보강할 수 있습니다.
JPA 2.1 규격, 객체/관계 매핑을 위한 11.1 주석
예를 들어, 위에서 링크한 기사의 예를 인용하면 엔티티는 다음과 같습니다.
@Entity(name = "Post")
@Table(name = "post")
public class Post {
@Id
@GeneratedValue(
generator = "sequence",
strategy = GenerationType.SEQUENCE
)
@SequenceGenerator(
name = "sequence",
allocationSize = 10
)
private Long id;
private String title;
//Getters and setters omitted for brevity sake
}
매핑 파일은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings
xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm orm_2_1.xsd"
version="2.1"
>
<package>com.vladmihalcea.book.hpjp.hibernate.identifier.global</package>
<entity class="Post" access="FIELD">
<attributes>
<id name="id">
<generated-value strategy="IDENTITY"/>
</id>
</attributes>
</entity>
</entity-mappings>
기술적 측면과 사용하지 않는 이유에 대한 자세한 내용은AUTO
전략, 기사를 참조하십시오.
언급URL : https://stackoverflow.com/questions/50841647/is-there-a-way-to-use-generatedvalue-so-that-it-works-both-with-sequence-and-au
반응형
'source' 카테고리의 다른 글
JQuery 사용 - 양식 제출 금지 (0) | 2023.08.30 |
---|---|
이 클래스는 SomeModule -> SomeComponent를 통해 소비자에게 표시되지만 최상위 라이브러리 진입점에서 내보내지 않습니다. (0) | 2023.08.30 |
스프링 부트를 2.1.9에서 2.2.0으로 업그레이드하여 시작하는 동안 예외 발생 (0) | 2023.08.30 |
폼 작업을 변경하기 위한 Jquery (0) | 2023.08.30 |
Android:컨텐츠 URI에서 파일 URI를 가져오시겠습니까? (0) | 2023.08.30 |