기본키 매핑
- @Id와 @GeneratedValue의 조합으로 사용
- @Id만 사용 : 직접 할당
- @GeneratedValue - startegy 속성
- IDENTITY : 데이터베이스에 위임 (MySQL)
- SEQUENCE : 데이터베이스 시퀀스 (Oracle)
- TABLE : 키 생성 전용 테이블을 만듬 (모든 DB에 적용 가능하나, 성능이 안 좋음 )
- AUTO : 데이터베이스 방언에 맞춰서 알아서 생성
@GeneratedValue(strategy = GenertaionType.IDENETITY)
- MySQL, PostgreSQL에서 사용
- DB가 알아서 기본키를 생성해주므로 해당 ID값을 파악하기 위해선 DB로 가봐야 함
- SEQUENCE와 달리 commit 시점이 아닌 persist를 호출하는 시점에 실제로 insert 쿼리가 DB에 날라감
- ID값을 조회할 땐 insert로 값을 넣은 후, select 없이 ID값을 리턴받을 수 있게 돼있음
@GeneratedValue(strategy = GenertaionType.SEQUENCE)
- Oracle, H2, PostgreSQL에서 사용
- 엔티티 자체에 @SequenceGenerator를 활용하여 매핑을 원하는 DB 시퀀스에 매핑할 수 있음
- @GeneratedValue에 generator 옵션에 해당 Generator의 이름을 부여해줌
- ex) @GenereatedValue(generator = “MY_SEQUENCE”)
@SeqeunceGenerator 속성
- 엔티티에 붙여서 사용
- initialValue : 시작 값
- allocationSize
- 시퀀스를 한 번 호출할 때 마다 증가하는 수 (성능 최적화에 사용, 50~100이 적정)
- 미리 값만큼 시퀀스를 메모리에 올려두고 다 사용하면 다시 DB에 접근하는 방식
댓글남기기