JPA에서는 테이블과 매핑할 클래스를 엔티티로 관리하고, 이러한 엔티티에는 기본 키가 존재한다.

다만 DB 벤더마다 기본 키를 생성하는 방식이 달라, JPA에서는 자동 생성 전략을 지원한다.

💡 IDENTITY 전략

기본 키 생성을 데이터베이스에 위임하는 전략으로, 주로 PostgreSQL, SQL Server 등에서 사용한다.

엔티티 생성 시점에는 id가 없다가, 데이터베이스에 저장이 되어야 식별자가 생기는 특징이 있다.

→ 이러한 점이 영속성 컨텍스트의 특징인 쓰기 지연을 동작시키지 않는다.

사용 예제

@Entity
public class Board {
		@Id
		@GeneratedValue(strategy = GenerationType.IDENTITY)
		private Long id;
		... 
}

💡 SEQUENCE 전략

유일한 값을 순서대로 생성하는 특별한 오브젝트인 데이터베이스 시퀀스를 이용해 기본 키를 생성하는 방식.

엔티티가 영속 상태가 되면 즉시 id가 할당된다.

사용 예제1

CREATE TABLE BOARD (
		ID BIGINT NOT NULL PRIMARY KEY,
		DATA VARCHAR(255) 
)

//시퀀스 생성
CREATE SEQUENCE BOARD_SEQ START WITH 1 INCREMENT BY 1;