JPA - 기본키 전략

정병웅·2024년 4월 14일
0

JPA

목록 보기
2/3

JPA에서 사용하는 시퀀스 전략에 대해서 정리해 보았다.📖

AUTO_INCREMENT(GenerateType.IDENTITY)

설명

  • DB에 jpa로 데이터가 insert 된 후에 DB에서 기본키 생성을 하게 하는 방법이다.

특징

  1. 커밋 전에 데이터를 DB에 insert 수행
    1.1. 보통의 JPA 의 데이터 insert의 경우 영속성 컨텍스트에서 커밋 직전까지 insert 쿼리를 버퍼 해서 commit이 되면 db에 데이터를 insert 하는데, 이 경우에는 insert를 커밋되기 전에 수행 함.
    -> 디비에서 기본키를 생성 하기 때문에 JPA 입장에서는 @Id의 value를 알 수 없음. 따라서 커밋 전에 데이터를 insert 후 jpa 에서 select를 해옴
  2. 기본키 생성을 DB에 위임.

코드

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

GenerateType.SEQUENCE

설명

  • DB에서 이미 생성되어 있는 시퀀스를 JPA에서 가져다 사용하는 방식

특징

  1. 테이블에 이미 시퀀스가 있어야함.
  2. JPA 입장에서는 DB에 이미 생성 되어있는 시퀀스의 정보를 가져와서 엔티티에 할당

코드

@Entity
@SequenceGenerator(
	name = “MEMBER_SEQ_GENERATOR",
	sequenceName=“MEMBER_SEQ",//매핑할 데이터베이스 시퀀스 이름
	initialValue = 1, allocationSize = 1)
public class Member {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE,
    generator = "MEMBER_SEQ_GENERATOR")
	private Long id;

Reference

인프런 - 김영한 JPA 강의

profile
인생은 IT 노가다

0개의 댓글