JPA에서는 테이블과 매핑할 클래스를 엔티티로 관리하고, 이러한 엔티티에는 기본 키가 존재한다.
다만 DB 벤더마다 기본 키를 생성하는 방식이 달라, JPA에서는 자동 생성 전략을 지원한다.
기본 키 생성을 데이터베이스에 위임하는 전략으로, 주로 PostgreSQL
, SQL Server
등에서 사용한다.
엔티티 생성 시점에는 id가 없다가, 데이터베이스에 저장이 되어야 식별자가 생기는 특징이 있다.
→ 이러한 점이 영속성 컨텍스트의 특징인 쓰기 지연을 동작시키지 않는다.
사용 예제
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
}
유일한 값을 순서대로 생성하는 특별한 오브젝트인 데이터베이스 시퀀스를 이용해 기본 키를 생성하는 방식.
엔티티가 영속 상태가 되면 즉시 id가 할당된다.
사용 예제1
CREATE TABLE BOARD (
ID BIGINT NOT NULL PRIMARY KEY,
DATA VARCHAR(255)
)
//시퀀스 생성
CREATE SEQUENCE BOARD_SEQ START WITH 1 INCREMENT BY 1;