본문 바로가기
Back-End/Spring

엔티티 클래스

by sharekim 2021. 5. 12.

크게 두 종류의 코드로 JPA 개발이 가능합니다.

 

  • JPA 객체에 해당하는 엔터티 클래스
  • 엔터티 객체를 관리하는 기능을 가진 Repository 

엔티티 클래스

@Entity
@Table(name = "tbl_memo")
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long mno;

    @Column(length = 200, nullable = false)
    private String memoText;
}

@Entity

해당 클래스가 엔티티를 위한 클래스이며, 해당 클래스의 인스턴스들이 JPA로 관리되는 엔티티 객체임을 의미한다.

 

@Table

엔티티 클래스를 어떠한 테이블로 생성할 것인지에 대한 정보를 담기 위한 어노테이션이다.

 

@Id와 @GeneratedValue

@Id는 Primary Key를 지정하는 어노테이션이며 @GeneratedValue는 PK를 자동으로 생성하고자 할 때 사용한다.

 

@GeneratedValue의 생성 방식은 아래와 같다.

  1. AUTO : JPA의 구현체(Hibernate)가 생성방식을 결정
  2. IDENTITY : 사용하는 데이텁이스가 키 생성을 결정
  3. SEQUENCE : 데이터베이스의 SEQUENCE를 이용해서 키를 생성. @SequenceGenerator와 같이 사용.
  4. TABLE : 키 생성 전용 테이블을 생성해서 키 생성. @TableGenerator와 같이 사용.

@Column

컬럼에 다양한 속성을 지정할 때 사용한다. nullable, name, length, columnDefinition(기본값설정) 등이 있다.

 

@Builder

Builder  패턴을 사용할 때 쓰는 어노테이션으로 @AllArgsConstructor와 @NoArgsConstructor를 항상 같이 처리해야 컴파일 오류가 생기지 않는다.

댓글