엔티티 정의시 기본 애너테이션

minjjai·2022년 10월 12일
0

Example Code

@Getter
@Setter
@Entity
public class Article {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(length = 200)
    private String subject;

    @Column(columnDefinition = "TEXT")
    private String content;

    private LocalDateTime createDate;
}

Annotation

@Entity

  • JPA가 클래스를 엔티티로 인식하게 한다.

@Setter & @Getter

  • setter, getter메서드를 자동 생성해주는 lombok의 애너테이션

@Id

  • 해당 컬럼을 기본 키(primary key)로 설정한다.
  • @Id설정시 이제 해당 컬럼은 DB에 저장시 중복되는 값으로 저장될 수 없다.
  • 각각의 데이터를 구분하는 유효한 값이기 때문.

@GeneratedValue

  • 데이터 저장시 해당 속성의 값을 따로 설정하지 않아도 1씩 자동으로 증가하여 저장한다.
  • strategy : 고유번호를 생성하는 옵션
  • ex) GenerationType.IDENTITY
    해당 컬럼만의 독립적인 시퀀스롤 생성하여 번호를 증가시킨다.

@Column

  • 엔티티의 속성은 테이블의 컬럼명과 일치한다.
  • 컬럼의 세부적인 설정을 위해 @Column 애너테이션을 사용한다.
  • length : 컬럼의 길이를 설정
  • columnDefinition : 컬럼의 속성을 정의
  • ex)
    length = 100 : 해당 컬럼의 값의 길이는 최대 100 (기본값 : 255)
    columnDefinition = "TEXT" : 글자 수 제한없음

    엔티티의 속성은 @Column을 사용하지 않아도 컬럼으로 인식한다.
    컬럼으로 인식하고 싶지 않은 경우, @Transient를 사용하면 된다.

추가 설명

테이블의 컬럼명

예를 들어 createDate의 경우 테이블의 컬럼으로 저장될 때, create_date가 된다.

엔티티와 Setter

일반적으로 엔티티에는 데이터의 안전을 위해서 Setter메서드를 구현하지 않고 사용하기를 권한다.
그렇다면 setter메서드없이 어떻게 값을 저장할까?

엔티티 생성 시에는 lombok의 @Builder 애너테이션을 사용하고, 데이터의 변경이 필요할 경우, 그에 해당되는 메서드를 따로 추가하여 데이터를 변경할 수 있게 하면 된다.

profile
BackEnd Developer

0개의 댓글