JPA 필드와 컬럼 매핑

김두현·2023년 4월 23일
1

JPA

목록 보기
4/14
post-thumbnail

Goal

  • 필드와 컬럼 매핑에 필요한 annotation과 속성에 대해 파악한다.
    • @Id
    • @Column
    • @Enumerated
    • @Lob
    • @Transient
    • @Temporal

@Id

  • @Entity가 붙은 클래스는 Primary Key를 필수로 가져야한다.

@Column

  • @Column은 필드와 매핑할 테이블의 컬럼의 여러 속성을 설정한다.

@Column 속성

  • name : 필드와 매핑할 테이블의 컬럼 이름
    • default는 객체의 필드명이다.
  • insertable, updatable : 등록 가능 여부, 수정 가능 여부
    • default = true
  • nullable : null 값의 허용 여부
    • default = true
  • columnDefinition : DB의 컬럼 정보를 직접 설정
  • length : String type에만 사용하며, 문자열의 길이 제한
    • default = 255
  • precision, scale : 소수점을 포함한 전체 자릿수, 소수의 자릿수 제한
    • default of precision = 19 , default of scale : 2

@Enumerated

  • Java의 enum type을 매핑할 때 사용한다.

@Enumerated 속성

  • EnumType.ORDINAL (default) : enum의 순서를 DB에 저장
  • EnumType.STRING : enum의 이름를 DB에 저장

  • ❗️반드시 EnumType.STRING으로 바꿔서 사용하자.❗️
    • 순서로 표기할 경우, enum에 필드가 추가된다면 순서가 꼬이게 된다.

@Lob

  • DB의 BLOB, CLOB 타입과 매핑된다.
    • 문자는 CLOB, 나머지는 BLOB과 매핑된다.
    • CLOB : 긴 문자열 데이터를 저장하기 위한 Type
    • BLOB : 이진 데이터를 저장하기 위한 Type
  • 속성은 존재하지 않는다.

@Transient

  • 컬럼에 매핑하지 않을 필드에 사용한다. 즉, DB에 저장도 조회도 하지 않는다.
    주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용한다.

날짜 및 시간

@Temporal을 이용해 표기했었으나, 최신 hibernate는 아래 기능을 제공한다.

  • LocalDate : 날짜 표기
  • LocalTime : 시간 표기
  • LocalDateTime : 날짜 시간 표기

참고 자료

https://www.inflearn.com/course/ORM-JPA-Basic


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글