본문 바로가기

수업 & 공부/용어 정리

52 : @Entity, @Builder, @GeneratedValue


@Entity

@Entity가 붙은 클래스는 JPA가 관리하는 클래스로, 해당 클래스를 엔티티라고 한다
JPA를 사용해서 테이블과 매핑할 클래스는 반드시 @Entity 를 붙여야 한다

 

[주의사항]

  • 기본 생성자 필수이다.
  • 파라미터가 없는 public 또는 protected 생성자가 필요하다.
  • final 클래스, enum, interface, inner 클래스는 엔티티로 사용할 수 없다.
  • DB에 저장하고 싶은 필드에는 final을 사용할 수 없다.

 

(출처 : https://gmlwjd9405.github.io/2019/08/11/entity-mapping.html)

 

 

 


@Table

@Table은 엔티티와 매핑할 테이블을 지정하는 것이다.
@Table 속성
@Table(name = "Board") 매핑할 테이블 이름을 지정한다.

 

 


@Builder

JPA 엔티티 객체들에 Builder 어노테이션을 이용해서 엔티티 객체에 Builder를 이용하는 것이다.

 

Builder 패턴의 장점을 알아보자

  1. 인자가 많을 경우 쉽고 안전하게 객체를 생성할 수 있다
  2. 인자의 순서와 상관없이 객체를 생성할 수 있다
  3. 적절한 책임을 이름에 부여하여 가독성을 높일 수 있다

 

(출처 : https://cheese10yun.github.io/spring-builder-pattern/)

 

 

 


@GeneratedValue

@GeneratedValue(strategy = GenerationType.IDENTITY)

식별자 할당 전략을 선택하기 - @GeneratedValue(strategy=???)

@id가 선언된 필드에 기본 키 값을 자동으로 할당한다. (Defalut값은 AUTO)

식별자를 할당하는 전략을 지정할때에는 @GeneratedValue 노테이션의 strategy 속성에 전략을 저장

즉 @GeneratedValue 어노테이션의 strategy( 전략 ) 속성에 따라 기본 키 값이 생성된다.

 


AUTO : DB 종류에 따라 JPA가 알맞은 것을 선택한다.
          ( Oracle은 SEQUENCE , MySQL은 IDENTITY를 선택한다 )

 

IDENTITY : 기본 키 생성을 데이터베이스에 위임한다.
               ( MySQL, PostgreSQL, SQL Server, DB2에서 사용 가능 )

 

TABLE : 키 생성 전용 테이블을 만들어서 sequence처럼 사용한다.

 

SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당하는 방법'

                 @SequenceGenerator를 사용하여 시퀀스 생성기를 등록하여야 한다.

'수업 & 공부 > 용어 정리' 카테고리의 다른 글

57 : @Transactional  (0) 2021.10.27
54 : [Java] Optional 이란? (추가예정)  (2) 2021.10.26
48 : REST API (2)  (0) 2021.10.13
46 : 제네릭 (Generics)  (0) 2021.10.11
39 : Springboot (Rest API - @PathVariable )  (0) 2021.09.30