Spring

[JPA] @GeneratedValue (Entity key생성)

검은고양이개발자 2023. 8. 6. 18:09
반응형

 

@GeneratedValue


@GeneratedValue는 Java Persistence API (JPA)에서 엔티티 클래스의 주요 키(Primary Key) 값을 자동으로 생성하기 위해 사용되는 어노테이션입니다. JPA는 관계형 데이터베이스와 자바 객체를 매핑하는 ORM(Object-Relational Mapping) 기술을 제공하는데, 이때 엔티티 클래스의 주요 키 값을 생성하는 방법 중 하나로 @GeneratedValue를 사용할 수 있습니다.

 

 

 

@GeneratedValue  (strategy type)



@GeneratedValue 어노테이션은 다음의 4가지 방식으로  자동 생성 전략을 설정할 수 있습니다.

GenerationType.IDENTITY: 

주로 MySQL과 같은 데이터베이스에서 사용되는 방법으로, 데이터베이스의 자동 증가 기능을 이용하여 주요 키 값을 생성합니다.

GenerationType.AUTO: 

JPA 구현체가 데이터베이스에 맞는 적절한 전략을 자동으로 선택하여 주요 키 값을 생성합니다. 데이터베이스마다 다른 전략을 사용합니다.

GenerationType.SEQUENCE: 

일련번호(Sequence)를 사용하여 주요 키 값을 생성합니다. 일부 데이터베이스는 시퀀스를 지원하며, 이를 활용하여 주요 키 값을 생성합니다.

GenerationType.TABLE: 

별도의 키 생성 테이블을 사용하여 주요 키 값을 생성합니다. 일부 데이터베이스는 시퀀스를 지원하지 않을 수 있으므로, 이를 대체하는 방법으로 사용됩니다.

@GeneratedValue 어노테이션은 주로 엔티티 클래스의 주요 키 필드 위에 선언됩니다. 

아래는 @GeneratedValue 어노테이션을 사용한 간단한 예시입니다:

 

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

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

    // 다른 필드와 메서드들...
}

 

@GeneratedValue 어노테이션은 JPA 표준에 따르는 ORM 프레임워크에서 사용될 수 있습니다. 다양한 JPA 구현체(Hibernate, EclipseLink 등)가 있으며, 데이터베이스마다 지원하는 기능과 전략들이 다를 수 있습니다. 따라서 사용 환경에 따라 적절한 전략을 선택하는 것이 중요합니다.

반응형