직접할당 :@Id만 사용
자동생성 : @GeneratedValue
@GeneratedValue(strategy= ? )#
GenerationTpye.Identity: 전략을 DB에 위임#
- DB에 들어간 후에, ID값을 알 수 있음 =>
persist()후 바로 쿼리 날라감
- AUTO_INCREMENT 생각
GenerationTpye.Sequence#
- DB의 Sequence 사용
persist()후 Sequence값만 가져왔다가, 끝날때 날림allocationSize등을 통해 성능향상 가능
@Entity
@SequenceGenerator(
name = “MEMBER_SEQ_GENERATOR",
sequenceName=“MEMBER_SEQ",//시퀀스이름
initialValue = 1, allocationSize = 50) //한번에 50개 가져오고,그동안은 메모리에서 가져옴
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "MEMBER_SEQ_GENERATOR")
private Long id;GenerationType.TABLE#
- Sequence 역활을 하는 테이블 사용 정략
- Sequence 없는 DB도 가능하지만, 성능 이슈
GenerationType.UUID#
- 강의에는 없는데 추가된거같음
- 말그대로 UUID 사용
권장 식별자 전략#
Long + 대체키 + 생성전략