본문 바로가기
백엔드

[Spring Boot] JPA @Id 전략

by 육빔 2024. 8. 15.
728x90
반응형

항상 JPA로 엔티티를 만들때 id 값에다 붙이는 어노테이션. 전략이 여러 개 존재하여 같아 정리하고자 한다.

 

@Id 애너테이션

@Id 애너테이션은 JPA에서 엔티티의 기본 키를 정의할 때 사용됩니다. 엔티티 클래스 내에서 하나의 필드 또는 메소드에 @Id를 붙여 해당 필드가 데이터베이스에서 해당 엔티티를 고유하게 식별할 수 있는 기본 키임을 나타냅니다.

 

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

 

이렇게 어노테이션을 사용하고

@GeneratedValue에게 4가지 전략이 존재하는데

 

첫번째로

1. GenerationType.AUTO

  • 설명: 기본 키 생성을 JPA 구현체에 위임합니다. 각 데이터베이스 벤더에 맞게 적절한 전략이 자동으로 선택됩니다.
  • 특징: 데이터베이스에 따라 SEQUENCE나 IDENTITY 전략이 선택될 수 있습니다.

온전히 JPA에게 자동으로 부탁하는 전략.

 

2. GenerationType.IDENTITY

  • 설명: 기본 키 생성을 데이터베이스에 맡깁니다. 데이터베이스에서 AUTO_INCREMENT 또는 IDENTITY 속성을 사용하여 기본 키를 생성합니다.
  • 특징: 주로 MySQL, PostgreSQL 등에서 사용되며, 기본 키가 자동으로 증가하는 필드입니다. 새로운 레코드가 삽입될 때마다 기본 키 값이 자동으로 생성됩니다.

키 생성을 데이터베이스에게 맡기는 전략.

 

3. GenerationType.SEQUENCE

  • 데이터베이스의 시퀀스를 사용하여 기본 키를 생성합니다.
  • 이 전략은 주로 Oracle, PostgreSQL 같은 시퀀스를 지원하는 데이터베이스에서 사용됩니다. 시퀀스를 통해 키 값을 미리 가져온 다음 이를 엔티티에 할당합니다.

 

4. GenerationType.TABLE

  • 별도의 테이블을 만들어 기본 키 값을 관리합니다.
  • 이 전략은 데이터베이스 독립적이지만 성능이 다른 전략보다 떨어질 수 있습니다. 테이블을 통해 기본 키 값을 관리하므로 각 삽입 시 테이블을 조회하고 업데이트해야 하기 때문입니다.
728x90
반응형