@Id
@Column(name = "rec_id", scale = 0)
@GeneratedValue(generator = "RecIdSequence", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "RecIdSequence", sequenceName = "P_REC_ID_SEQUENCE")
public Long getRecordId() {
return outboundPackageRecordId;
}
지금이의 나의 이해는 오라클 DB를 사용하여 PK.Am을 생성하는 데 사용되는 DB 차 key.A DB 시퀀스를 생성하는 JPA 주석을 사용하는 코드가 있습니다 : DB 시퀀서가 반환 한 시퀀스 ID가 rec_id로 사용됩니다. 이 맞습니까?
DOC는 말한다 :
순서 전략 시퀀스 전략은 두 부분으로 구성 - 명명 된 순서를 정의하고 하나 하나 개 이상의 필드 또는 이상의 클래스에 명명 된 시퀀스를 사용. @SequenceGenerator 주석은 시퀀스를 정의하는 데 사용되며 이름, 초기 값 (기본값은 1) 및 할당 크기 (기본값은 50)를 허용합니다. 시퀀스는 응용 프로그램에 대해 전역이며 하나 이상의 클래스의 하나 이상의 필드에서 사용할 수 있습니다. 시퀀스 전략은 이전에 정의 된 이름 순서로 지정된 필드를 연결합니다 @GeneratedValue 주석에 사용됩니다
@Entity
@SequenceGenerator(name="seq", initialValue=1, allocationSize=100) // Define a sequence - might also be in another class:
public class EntityWithSequenceId {
// Use the sequence that is defined above:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
@Id long id;
}
은 AUTO 및 IDENTITY는 달리, SEQUENCE 전략은 즉시 자동 값을 생성 새 엔티티 객체가 지속될 때 (즉, 커밋 이전). 이 값은 기본 키 값이 일 때 필요합니다. 데이터베이스 서버로의 왕복을 최소화하기 위해 ID는 그룹으로 할당 된 입니다. 각 할당의 ID 수는 allocationSize 속성에 의해 으로 지정됩니다. ID 할당 중 일부 이 사용되지 않을 수 있습니다. 따라서이 전략은 에 시퀀스 값에 틈이 없음을 보장하지 않습니다.
@ Makky.We는 oracle DB를 사용하고 있습니다. 또한 다음 값 u는 P_REC_ID_SEQUENCE에 의해 다시 계산 된 값을 의미합니까? – user93796
예. P_REC_ID_SEQUENCE에서 반환 된 다음 값입니다. – Makky