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