[JPA] 기본키(PK) 매핑 방법 및 생성 전략 - Heee's Development Blog
@GeneratedValue : 주키의 값을위한 자동 생성 전략
JPA가 지원하는 주키 생성전략
- AUTO(default) : persistence provider가 특정DB에 맞게 자동 선택, JPA 구현체가 자동으로 생성 전략 3가지중 하나를 결정한다.
- IDENTITY
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- 기본키 생성을 DB에 위임
- id 값을 null로 하면 DB가 알아서 AUTO_INCREMENT 해준다.
- SEQUENCE
- @GeneratedValue(strategy = GenerationType.SEQUENCE)
- 데이터베이스 Sequence Object를 사용
- 데이터베이스 Sequence는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트
- 테이블마다 시퀀스 오브젝트를 따로 관리하려면 @SequenceGenerator에 sequenceName 속성에 매핑할 데이터베이스 시퀀스 이름을 생성해준다.
- id 값을 설정하지 않고(null로 하고) Generator에서 지정한 Sequence 전략에서 id값을 가져온다.
- TABLE : 데이터베이스에 키 생성 전용 테이블을 하나 만들고 이를 이용해서 기본키를 생성한다.
- @GeneratedValue(strategy = GenerationType.TABLE)
- 키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략
- @TableGenerator 필요
오늘한일
- 오전 호눅스수업은 거의 이해하지 못했다. 요즘 수업내용을 잘 못따라가는거 같은데 미션 구현하는데 대부분 시간을 할애해서 수업내용에 대한 학습을 거의 못한다...
- 주말에 DB공부를 하려했건만 미션4에서 삽질과 에러랑 싸우는 시간이 생각보다 오래걸려서 못했다. 자바랑 스프링 다음으로 DB가 제일 중요하다고 호눅스가 얘기해주셨는데 얼른 해야겠다.
- 주말에 이틀동안 애매하게 공부했다. 이럴바엔 하루는 열공하고 하루는 친구를 만나야겠다.
- 처음 짝프로그래밍을 했다. 분명히 나는 이미 진행한 미션이였는데 몇몇 어노테이션 의미를 몰랐다. 제대로 공부를 안했다는 뜻이겠지 휴. 네비게이터와 드라이버로 진행하는게 확실히 혼자하는거보다 어렵다. 혼자 하면 이것저것 막 시도해보는데 드라이버 입장에서는 그럴수 없고, 네비게이터도 일일히 지시해야하다보니 어거스트가 굉장히 힘들어보였다... 오늘 결국 에러를 해결하지 못하고 끝났지만 처음 해본날이니깐 앞으로 나아지겠지.
- 인텔리제이가 너어어어무 느려서 줌으로 화면공유한 탓인가 했지만 아니였다. 메모리 할당량을 늘리면 된다해서 해결했다 정말 기쁘다. 홧병날뻔했다.
- @GeneratedValue로 지정하는 주키 자동생성 전략의 종류에 대해 학습했다.