Skip to Content
Suffering builds character
아카이브17.JPA5.기본키 매핑

5.기본키 매핑

1. @Id, @GeneratedValue

@Id, @GeneratedValue은 JPA의 Entity와 맵핑되는 테이블의 PRIMARY KEY를 어떻게 생성할 것인지에 대한 설정을 적용할 수 있는 Annotation

Key 생성 전략은 크게 아래의 2가지로 구분됨

1-1. 직접 할당 방식

기본키 값을 애플리케이션 Java 코드로 직접 할당

Sample.java
int key = 1; new Mouse(key++, "미니", "하와이");

1-2. 자동 생성 방식

DBMS별로 적용할 수 있는 설정 방식 @GeneratedValue Annotation을 활용하여 지정 가능

2. @GeneratedValue에 적용할 수 있는 strategy 옵션

2-1. IDENTITY

기본 키의 생성을 DBMS에게 위임하는 전략 MySQL의 AUTO_INCREMENT 옵션 적용 시 사용 가능한 옵션

2-2. SEQUENCE

DB의 시퀀스를 사용해서 기본키를 할당하는 전략 오라클 DBMS에서 지원, MySQL은 지원하지 않음

2-3. TABLE

기본 키 생성, 관리하기 위한 별도의 커스텀 테이블을 사용하는 방식 직접 생성한 테이블을 사용하기 때문에 모든 DBMS에서 사용 가능

2-4. AUTO

각 DBMS의 전략에 맞는 기본 키 생성 전략을 자동으로 지정하는 방식 개발자가 별도의 strategy 옵션을 추가하지 않으면 기본값은 AUTO로 적용됨

3. 직접 할당 / 자동 생성 방식

직접 할당 방식을 사용하려면 엔티티 클래스에 @Id만 사용하면 됨

Book.java
@Entity @Table(name = "BOOKS") public class Book {     @Id     @GeneratedValue(strategy = GenerationType.IDENTITY)     private int id;         @Column(name = "book_name", nullable = false)     private String bookName;         private String author; }

자동 생성 전략을 사용하려면 @Id + @GeneratedValue를 추가하고 원하는 키 생성 전략을 파라미터로 설정하면 됨

Book.java
@Entity @Table(name = "BOOKS") public class Book {     @Id     @GeneratedValue(strategy = GenerationType.IDENTITY)//MySQL의 AUTO_INCREMENT 사용     private int id;         @Column(name = "book_name", nullable = false)     private String bookName;         private String author; }
Last updated on