👍Oracle 자체적인 sequence 자동생성 및 적용
엔터티 생성시 PK의 기본값을 자동생성
@Data
@Entity
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long memberId;
@Column(length = 20) // VARCHAR(20)
private String name;
@Column(name = "team_id")
private Long teamId;
}
🔵 기본으로 1에서 1++ 로 올라가는 sequence 생성 후 Entity 생성
Hibernate: create sequence hibernate_sequence start with 1 increment by 1
Hibernate: create table Member (member_id number(19,0) not null, name varchar2(20), team_id number(19,0), primary key (member_id))
🙊 without @GeneratedValue
sequence 생성 없이 Entity 생성
Hibernate: create table Member (member_id number(19,0) not null, name varchar2(20), team_id number(19,0), primary key (member_id))
Entity 에서 참조할 수 있는 시퀀스를 생성한다
@Entity
@SequenceGenerator(
name="member_seq_gen", //시퀀스 제너레이터 이름
sequenceName="member_seq_id", //시퀀스 이름
initialValue=1, //시작값
allocationSize=1 //메모리를 통해 할당할 범위 사이즈 default = 50
)
public class Member {
@Id
@GeneratedValue(strategy= GenerationType.SEQUENCE,
generator="member_seq_gen")
@Column(name = "member_id")
private Long memberId;
@Column(length = 20) // VARCHAR(20)
private String name;
@Column(name = "team_id")
private Long teamId;
}
Hibernate: create sequence member_seq_id start with 1 increment by 50
Hibernate: create table Member (member_id number(19,0) not null, name varchar2(20), team_id number(19,0), primary key (member_id))
🔵 member_seq_gen이라는 SequenceGenerator(시퀀스 생성자) 를 통해 member_seq_id라는 sequence 생성
persistence.xml
필수 설정 조건<property name="hibernate.id.new_generator_mappings" value="false"/>