- 맵핑 어노테이션 정리
- 기본 키 맵핑
- IDENTITY, SEQUENCE, TABLE 전략
EnumType.ORDINAL
옛날데이터가 변경되지는 않으니깐, ordinal 사용금지EnumType.STRING
사용하기이렇게 하면 필드와 컬럼 맵핑 끝
뒤에 가서 연관관계 맵핑이 어려움
IDENTITY
(1) 주로 키 생성을 데이터베이스에 위임
(2) AUTO_INCREMENT는 데이터베이스에 insert sql을 실행한 이후에 id값을 알 수 있음
(em.persist() 시점에 즉시 insert sql 실행하고 db에서 식별자를 조회)
SEQUENCE
(1) 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트
(2) db에 먼저 접근해서 값 확인 후, commit()시점에 쿼리 날리기(근데, 이러면 db에 계속 접근하는 문제가 생김 해결책 : allocateSize를 지정하여 db에는 allocateSize만큼 채워졌을 때 접근하고, 메모리에서 카운트를 진행)
TABLE
(1) 키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략(단점 : 성능)
(2) 테이블 전략은 잘 쓰지는 않음
AUTO
(1) 각각의 데이터베이스에 따라서 위의 3개중에 하나 선정
기본 키 제약 조건 : null 아님, 유일, 변하면 안됨
미래까지 이 조건을 만족하는 자연키는 찾기 어려움. 대리키(대체키)를 사용하자
autoIncrement, sequence, uuid, 회사 내부의 랜덤 값 등을 사용하기
주민등록번호도 기본 키로 적절하지 않음
이 글은 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'을 수강하고 정리한 내용입니다.