@GenratedValue Annotation은 JPA에서 @Entityprimary key가 자동으로 생성되도록 하는 데 사용되는 Annotation이다.

주요 속성

속성명 기능
strategy primary key 생성 전략을 정의
generator 특정 시퀀스나 테이블을 사용하고자 할 때, 이름을 지정

strategy 속성은 4가지 값을 가질 수 있는데

GenerationType.AUTO 는 primary key 생성 전략을 JPA 구현체에 맡긴다. 대부분의 경우 JPA 구현체는 데이터베이스의 dialect 에 따라 적절한 전략을 자동으로 선택한다.

GenerationType.IDENTITY 는 primary key 생성을 데이터베이스에 위임한다. MySQL, postgreSQL 등의 데이터 베이스에서 AUTO_INCREMENT와 같은 방식으로 기본키가 생성된다.

GenerationType.SEQUENCE데이터베이스의 시퀀스를 사용하여 primary key를 생성한다.

GenerationType.TABLE별도의 테이블을 만들어 key 값을 관리하는 전략이다.

@Entity  
@Builder  
@Data  
@NoArgsConstructor @AllArgsConstructor  
@Table(name = "user")  
public class User {  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    @Column(name = "user_seq", nullable = false)  
    Integer userSeq;  
  
    @Column(name = "id", length = 50, nullable = false)  
    String id;  
  
    @Column(name = "regist_time", nullable = false)  
    LocalDateTime registTime;  
  
    @Column(name = "last_login_time")  
    LocalDateTime lastLoginTime;  
}

필자는 MariaDB 에서 auto_increment 를 사용하여 sequence를 생성하고 있기 때문에 위와 같이 IDENTITY 속성을 적용하였다.


연결문서

댓글남기기