본문 바로가기
프로그래밍/Back-end

JPA 주요 매핑 어노테이션에 대해서!

by @GodWin 2024. 10. 14.

-

 

-

안녕하세요? 오늘은, JPA에서의 중요 매핑 어노테이션에 대해서 알아보도록 하겠습니다.

-

JPA의 중요 매핑 어노테이션의 종류는,

@Entity @Table @ID @Column @Enumerated @Temporal @Lob  @Transient 등등이 존재합니다.

 


우선 샘플코드로 어떻게 사용하는지 알아보도록 하겠습니다.

@Entity
@Table(name="")
public class 엔티티명 {
  
  @ID
  private Long id;
  
  @Column(name="")
  private String name;
  
  @Column
  private Integer age;
  
  @Enumerated(EnumType.STRING)
  private RoleType roleType;
  
  @Temporal(TemporalType.TIMESTAMP)
  private Date createDate;
  
  @Lob
  private String description;
  
  ...
  
}

 

 

그럼 이제 각각의 어노테이션의 역활을 알아보도록 하겠습니다.

 

 

-
@Entity


: JPA에서 관리하는 DB 테이블 선언 어노테이션


-
@Table


: 테이블 이름 매핑 어노테이션

: 기본적으로, 엔티티 클래스 명을

이블명의 카멜케이스로 생성을 하게 되면

해당 어노테이션이 불필요하지만,

name 속성을 이용해서,

직접 테이블 명을 지정해줄 수 있다.

 


-
@ID


: 해당 엔티티의 Key값 컬럼 매핑 어노테이션


-
@Column


: 해당 엔티티의 컬럼 매핑 어노테이션

: 해당 어노테이션의 속성

속성명 설명 셋팅값
name -필드와 매핑할 테이블의 컬럼 이름  
insertable(DDL) -DB 등록 가능 여부 true / false
updateable(DDL) -DB 변경 가능 여부 true / false
nullable(DDL) -null값의 허용 여부 설정 false는 not null
unique(DDL) -컬럼에 간단히 유니크 제약조건을 걸 때 사용  
columnDefinition(DDL) -데이터베이스 컬럼 정보를 직접 부여 가능  
length(DDL) -문자 길이 제약조건
-String 타입에만 사용
 
precision -BigDecimal / BigInteger 타입에서 사용
-double, float 타입에는 적용 불가
-소수점을 포함한 전체 자릿수
 
scale(DDL) -BigDecimal / BigInteger 타입에서 사용
-double, float 타입에는 적용 불가
-소수의 자리수
 




-
@Enumerated


: 해당 엔티티의 enum 타입 매핑 어노테이션
: 기본이 ORDINAL > enum 순서를 저장
※ 순서가 변하면, 기존 데이터의 마이그레이션이 필수
: STRING 선택 가능 > enum 이름을 저장

 


-
@Temporal


: 해당 엔티티의 날짜 타입 컬럼 매핑 어노테이션
: DATE / TIME / DATETIME
: 최신 자바 버전에서는, 해당 어노테이션 사용대신, 타입을 LocalDate / LocalDateTime 형식 사용 가능


-
@Lob


: 해당 엔티티의 BLOB, CLOB 컬럼 매핑 어노테이션
: 매핑하는 필드 타입이 문자면 CLOB, 나머지는 BLOB으로 매핑

 


-
@Transient


: 맵핑 제외 선언 어노테이션

오늘은, JPA에서의 중요 매핑 어노테이션에 대해서 알아보았습니다.

그럼 오늘도 즐거운 하루 되시길 바라겠습니다.