@Id
@GeneratedValue
DB 시퀀스는 유일한 값을 순서대로 생성하는 특별한 DB 오브젝트(예 : 오라클 시퀀스)
ORACLE은 @SequenceGenerator 필요
@Entity
@SequenceGenerator(
name = "MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ", // 매핑할 DB 시퀀스 이름
initialValue = 1, allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strateg = GenerationType.SEQUENCE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
}
initialValue : 초기 값, 마지막으로 생성된 값이 기준이다.(기본값 0)
// 테이블 생성
create table MY_SEQUENCES(
sequence_name varchar(225) not null,
next_val bigint,
primary key (sequence_name)
)
// 적용
@Entity
@TableGernerator(
name = "MEMBER_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = "MEMBER_SEQ", allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "MEMBER_SEQ_GNERATOR")
private Long id;
}