최대 1 분 소요

본 포스트는 Inflearn의 김영한님 강의를 바탕으로 작성했습니다.


기본 키 매핑 전략

  • IDENTITY : 데이터베이스에 위임하는 전략
    • MYSQL에서 사용됨.
    • AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 이후에 ID값을 알 수 있기 때문에 em.persist() 시점에 바로 INSERT SQL을 실행하고 ID를 가져온다.
@Entity
public class Item {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
}


  • SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용
    • 오라클에서 사용
    • 데이터베이스 시퀀스란 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트를 뜻한다.
@Entity
@SequenceGenerator(
name = ITEM_SEQ_GENERATOR",
sequenceName = “ITEM_SEQ",
initialValue = 1, allocationSize = 1)
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
private Long id;


  • Table : 키 생성용 테이블 사용, 모든 DB에 적용 가능
    • 키 생성 전용 테이블을 하나 만들고 데이터베이스 시퀀스를 흉내내는 전략
    • 모든 데이터베이스에 적용이 가능하지만 성능이 좋지 않다.

Object

@Entity
@TableGenerator(
name = "ITEM_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = ITEM_SEQ", allocationSize = 1)
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.TABLE,
generator = "ITEM_SEQ_GENERATOR")
private Long id;

Table

create table MY_SEQUENCES (
sequence_name varchar(255) not null,
next_val bigint,
primary key ( sequence_name )
)


  • AUTO : 방언에 따라 자동 지정, 기본 값


실무 사용 가이드

  • 기본키는 Long Type + 대체키 + 키 생성전략을 활용하자



참고 사이트 출처

  • https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

태그: , ,

카테고리:

업데이트: