엔티티 매핑

@Entity

  • JPA가 관리할 엔티티를 클래스에 지정
  • 필수 에노테이션
  • 파라미터가 없는 기본 생성자 필수
    • pulbic or protected
  • DB에 저장할 필드에는 final을 사용해선 안 됨

@Table

  • DB의 테이블명에 알맞게 매핑할 수 있게 해줌
    • ex) - @Table(name = “Meber”)
  • uniqueConstraints 옵션으로 유니크 제약 조건을 지정함

@Column

  • DB의 컬럼과 Class의 필드를 매핑
  • DDL 생성 기능으로 제약을 걸 수 있음
    • unique - 유니크 제약 조건 (이름을 설정할 수 없어서 잘 쓰지 않고 @Table에서 걸어버림)
    • nullable - null 제약 조건
    • length - 문자 길이 제약 조건 (String에서만 사용)
    • columnDefinition - 직접 컬럼 정보 입력 가능

DDL 생성 기능


DDL을 생성하는 시점에만 사용되고, JPA의 실행 로직 자체에는 아무런 영향을 주지 않는 기능

@Enumerated

  • enum 타입을 매핑할 때 사용
  • ORDINAL(순서대로 번호 부여) 옵션이 아닌 STRING(필드명) 옵션으로 사용!!!

@Lob

  • 지정 가능한 속성이 없음
  • 문자면 CLOB, 나머지는 BLOB으로 매핑
  • 큰 컨텐츠를 넣고 싶은 경우 사용

@Transient

  • 필드 매핑을 하지 않는 용도
  • 메모리상에서만 임시로 어떤 값을 보관하고 싶은 경우 사용

DB 스키마 자동 생성 속성 정리

옵션 설명
create 기존 테이블 삭제 후 재생성 (DROP + CREATE)
create-drop 테이블 생성 후, 종료 시점에 테이블 DROP
update 변경된 부분(추가)만 반영 (운영 DB에서 사용 X)
validate 엔티티와 테이블이 정상 매핑됐나만 확인
none 사용 X
  • 자동으로 생성된 DB 스키마를 그대로 쓰지 말고, 다듬어서 사용하자!!!
  • 추천 속성
    • 개발 초기 : create or update
    • 테스트 : update or validate
    • 스테이징, 운영 : validate or none



인프런 - 김영한님의 JPA 강의를 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기