• 참조

    • 블로그: https://velog.io/@gudnr1451/GeneratedValue-정리
  • @GeneratedValue이란

    • JPA를 사용할 때 ORM객체의 기본키를 자동으로 생성하고 관리하는 경우 사용하는 어노테이션
    • 즉, 기본키를 자동 생성 전략을 설정하는 어노테이션
  • @GeneratedValue(strategy = GenerationType.IDENTITY)

    • 기본키 생성을 DB에 위임하는 방식
    • id값을 따로 할당하지 않아도 DB측에서 AUTO_INCREMENT하여 기본키를 생성하는 전략
  • @GeneratedValue(strategy = GenerationType.SEQUENCE)

    • DB에서 sequence 객체를 활용하여 기본키를 생성

    • @SequenceGenerator 어노테이션과 함께 사용됨

    • 예시 코드

      @Entity
      @SequnceGenerator(
      	name = "BOARD_PK_GENERATOR",
      	sequenceName = "BOARD_PK_SEQ",
      	initialValue = 1,
      	allocationSize = 50
      )
      public class Board {
      	@Id
      	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_PK_GENERATOR")
      	private Long id;
      	private String title;
      	private String content;
      }
      
  • @GeneratedValue(strategy = GenerationType.TABLE)

    • 키를 생성하는 테이블을 활용하는 방법(Sequence와 유사)

    • @TableGenerator 어노테이션과 함께 사용됨

    • 예시 코드

      @Entity
      @TableGenerator(
      	name = "BOARD_PK_GENERATOR",
      	table = "BOARD_PK_SEQ",
      	pkColumnValue = "BOARD_SEQ",
      	allocationSize = 1
      )
      public class Board {
      	@Id
      	@GeneratedValue(strategy = GenerationType.TABLE, generator="BOARD_PK_GENERATOR")
      	private Long id;
      	private String title;
      	private String content;
      }
      
  • @GeneratedValue(strategy = GenerationType.AUTO)

    • 기본 설정 값
    • DB에 따라 기본키를 자동으로 생성