[JPA] 엔티티 어노테이션

JPA Entity Annotation

JPA로 데이터베이스와 매핑될 엔티티를 작성할 때 필드에 필요한 어노테이션을 알아보자.

@Id

@Id는 필드와 Primary Key를 매핑할 때 쓰는 어노테이션이다.
@Id로 매핑을 해준 뒤, PK 생성에 대한 전략을 정할 수 있다.
@GeneratedValue(strategy = GenerationType.전략 방법) 의 어노테이션으로 PK 생성 전략을 정할 수 있다.
전략의 종류는 다음과 같다.

  • IDENTITY : MySQL의 Auto_Increment 방식이다. 데이터베이스가 1씩 증가시키며 자동으로 생성해 준다.
  • SEQUENCE : 오라클의 시퀀스 오브젝트 방식을 사용한다.
  • TABLE : 키 생성용 테이블을 만들어서 생성하는 방식이다.
  • AUTO : JPA에 설정된 데이터 베이스 방언에 맞춰서 생성한다. 방언을 확인하고 사용해야 한다.

@Transient

해당 필드가 데이터베이스에 반영 안 되게 한다.

@Column

필드와 매칭되는 칼럼에 대한 설정을 할 수 있는 어노테이션이다.
다음과 같은 설정을 할 수 있다.

  • name : 필드와 매핑될 테이블의 칼럼 이름을 정할 수 있다. 디폴트 값은 필드의 이름이다.
  • unique : 칼럼에 대한 unique 조건을 걸어줄 수 있다. 이 설정보단 엔티티에 직접 ‘@Table(uniqueConstraints = “abc”)’로 설정할 수 있다.
  • nullable : 이 속성을 flase로 하면 not null 제약 조건이 걸린다.
  • insertable, updatable : 컬럼을 삽입하거나, 수정했을 때 반영할지를 여부 디폴트 값은 true
  • length : 칼럼 값의 길이를 직접 설정할 수 있다.
  • columnDefinition : 데이터베이스에게 칼럼 정보를 직접 준다.

@Enumerated

  • EnumType.String : Enum 이름을 문자 그대로 저장
  • EnumType.ORDINAL : 이넘 순서를 디비에 순서에 맞게 숫자로 저장 -> 숫자가 사람의 생각과 다르게 바뀌기 때문에 잘 안 쓰인다.