본문 바로가기
Spring/JPA

엔티티 매핑

by o3oppp 2023. 8. 25.

@Entity

  • 엔티티 : DB 테이블에 대응하는 하나의 클래스
  • 해당 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티
  • 주의 사항
    • 기본 생성자 필수(public, protected)
    • final 클래스, enum, interface, inner 클래스에 사용 불가
    • 저장할 필드에 final 사용 불가

@Table

  • 엔티티와 매핑할 테이블 지정
  • @Table(name = "테이블 명") : 기본은 클래스 명과 동일

@Column

  • 클래스 내의 필드와 테이블 컬럼 매핑
  • @Column(name = "테이블에서 매핑될 컬럼 명")
  • 속성
    • name : 필드와 매핑할 테이블의 컬럼 이름
    • insertable, updatable : 등록, 변경 가능 여부 (default : true)
    • nullable : null 값 허용 여부 (default : false)
    • unique : 한 컬럼에 유니크 제약조건을 걸 때 사용 (default : false)
    • columnDefinition : 데이터베이스 컬럼 정보를 직접 줄 때 사용
      • columnDefinition = varchar(100) default 'EMPTY'
    • length : 문자 길이 제약조건, String 타입에만 사용

@Enumerated

  • enum 타입 매핑 (default : ORDINAL)
  • ORDINAL : enum 클래스 필드의 순서를 저장 (0,1,2,..)

@Temporal

  • 날짜 매핑
  • 속성
    • TemporalType.TIMESTAMP : 데이터베이스 timestamp 타입과 매핑, 날짜와 시간
    • TemporalType.DATE : 데이터베이스 date 타입과 매핑, 날짜
    • TemporalType.TIME : 데이터베이스 time 타입과 매핑, 시간

@Lob

  • CLOB, BLOB 매핑
    • CLOB : 사이즈가 큰 데이터(문자열 데이터)를 외부 파일로 저장하기 위한 데이터 타입
    • BLOB : 바이너리 데이터를 데이터베이스 외부에 저장하기 위한 데이터 타입
  • 매핑하는 필드 타입이 문자면 CLOB, 나머지는 BLOB

@Transient

  • 실제 데이터베이스 반영하지 않고 메모리상에서만 임시로 어떤 값을 보관할 때 사용

기본키 매핑

  1. @Id : 직접 할당
  2. @GeneratedValue : 자동 생성
    • AUTO : 방언에 따라 자동 지정, default
    • IDENTITY : 데이터베이스에 위임
      • 해당 필드 값을 주면 안됨
      • MSSQL의 AUTO_INCREAMENT
    • SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용
    • TABLE : 키 생성 전용 테이블을 만듬, 모든 데이터베이스에서 사용 가능

 

 

 

 

'Spring > JPA' 카테고리의 다른 글

MappedSuperclass  (0) 2023.12.20
상속관계 매핑  (0) 2023.12.20
연관관계 매핑  (1) 2023.12.19
영속성 관리  (0) 2023.08.22
JPA(Java Persistence API)란  (0) 2023.08.17