티스토리 뷰

JPA

[JPA] 기본키 매핑

sayho 2023. 7. 29. 16:08
기본키 매핑 방법
  • 직접 할당 : @Id 만 사용
  • 자동생성 : @GeneratedValue 사용
    •  IDENTITY : 데이터 베이스에 위임. MySQL
    • SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE, @SequenceGenerator 필요
    • TABLE : 키 생성용 테이블, 모든 DB에서 사용, @TableGenerator 필요
    • AUTO : 방언에 따라 자동 지정  
IDENTITY 전략의 특징
  • 기본키 생성을 데이터베이스에 위임
  • 주로 MySQL, PostgreSQL, SQL Server, DB2 에서 사용
  • JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행
  • AUTO_INCREMENT 는 데이터베이스에 insert sql을 실행한 이후 ID 값을 알 수 있음
  • IDENTITY 전략은 em.persist() 시점에 즉시 insert sql 을 실행하고 DB 에서 식별자를 조회
  • IDENTITY 전략은 id에 값을 넣지 않고 데이터베이스에 insert 하는 것임
  • ID 값을 데이터베이스에 insert 해야 알 수 있음
  • em.persist로 데이터베이스에 값을 넣음 IDENTITY 의 경우.. (보통 commit 해야 insert 쿼리가 날아감)
TABLE 전략
  • 키 생성 전용 테이블을 하나 만들어서 데이터베이스의 시퀀스를 흉내내는 전략
  • 모든 데이터베이스에 적용이 가능하다는 장점이 있지만 성능이 좋지 않다는 단점을 가지고 있음
권장하는 식별자 전략
  • 기본 키 제약 조건 : null 아님, 변하면 안됨
  • 미래까지 이 조건을 만족하는 자연키를 찾기 어렵기 때문에 대리키(대체키)를 사용하여야 함
  • 주민등록번호도 기본 키로 적절하지 않음
  • 권장 : Long형 + 대체키(Sequence, UUID 사용 등..) + 키 생성전략 사용

'JPA' 카테고리의 다른 글

[JPA] 실전예제 1~2  (0) 2023.07.29
[JPA] 엔티티 매핑  (0) 2023.07.09
[JPA] 영속성 컨텍스트 장점  (0) 2023.07.09
[JPA] 영속성 컨텍스트  (0) 2023.07.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함