[JPA 긴급 학습 (2)] 기본키 관련

1437 단어 JPAJPA
@Getter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Bakeries extends BaseEntity {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "bakery_id")
    private Long id;
    
    }
}

기본키는 두가지로 나뉜다.
직접할당할거냐, 자동 생성할거냐.

1. 직접할당

기본키를 어플리케이션에서 직접 할당한다.
즉, 내가 직접 값 바인딩해서 jpa한테 넘겨야한다.

@Id

어노테이션만 붙이면 된다.

(1) 자바 기본형
(2) 자바 Wrapper형
(3) String
(4) java.util.Date
(5) java.sql.Date
(6) java.math.BigDecimal
(7) java.math.BigInteger

위의 경우에만 @Id 어노테이션이 적용 가능하다.

2. 자동생성 - IDENTITY 전략

이건 기본키 생성을 DB에 위임한다.
DB가 알아서 생성한다.
굳이 내가 바인딩하지 않는다.

MySQL, PostgreSQL, SQL Server에서 주로 사용.

CREATE TABLE Board (
   ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
   ...
)

인 DDL이라고 할 때,

DB에 레코드 저장 시 ID 칼럼을 비워두면 알아서 순서대로 채워준다.

이 경우에는

@GeneratedValue(Strategy = GenerationType.IDENTITY) 
  

라고 기본키 필드 위에 붙인다.

가장 맨 위에 코드 있는 것처럼.

이 외에도 SEQUENCE전략, TABLE전략, AUTO 전략이 존재한다.
이렇게 다양한 이유는 DBMS마다 지원 방식이 다르기 때문.
오라클에서는 시퀀스가 존재하지만 MySQL에서는 없음.

급한건 프로젝트이므로 나중에 후술.

★★★★★
MySQL에서 실제로 기본키는 AUTO_INCREMENT로 지정하는게 성능 측면에서는 바람직하다고 함. 이 부분 정확히 정리할 필요 있음
★★★★★

좋은 웹페이지 즐겨찾기