본문 바로가기

JPA

[개념] JPA 프로그래밍 - 04. 엔티티 매핑

대표적인 매핑 어노케이션

매핑 어노테이션
객체와 테이블 매핑 @Entity, @Table
기본 키 매핑 @Id
필드와 컬럼 매핑 @Column
연관관계 매핑 @ManyToOne, @JoinColumn

필드와 컬럼 매핑

분류 매핑 어노테이션 설명
필드와 컬럼 매핑 @Column 컬럼을 매핑한다.
  @Enumerated 자바의 enum 타입을 매핑한다.
  @Temporal 날짜 타입을 매핑한다.
  @Lob BLOB, CLOB 타입을 매핑한다.
  @Transient

특정 필드를 데이터베이스에 매핑하지 않는다.

(객체에 임시로 어떤 값을 보관하고 싶을 때 사용)

기타 @Access JPA가 엔티티에 접근하는 방식을 지정

@Column

  • 속성
속성 기능 기본값
name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름
nullable null 값의 허용 여부 true
columnDefinition 데이터베이스 컬럼 정보를 직접 줄 수 있음  
length 문자 길이 제약조건, String 타입에만 사용 255
precision, scale precision은 소수점을 포함한 전체 자릿수, scale은 소수의 자릿수 precision=19, scale=2
  • 생략
    • nullable 속성값은 기본값이 true 이다.
    • 자바 기본 타입인 int data1을 DDL로 생성할 때는 not null 제약 족건을 추가하는 것이 안전하다.

 

int data1;                  // @Column 생략, 자바 기본 타입
data1 integer not null      // 생성된 DDL
 
Integer data2;              // @Column 생략, 객체 타입
data2 integer               // 생성된 DDL
 
@Column
int data3;                  // @Column 사용, 자바 기본 타입
data3 integer               // 생성된 DDL

@Enumerated

  • EnumType.ORDINAL : enum 순서를 데이터베이스에 저장 (데이터크기 작음, enum 순서를 변경할 수 없음)
  • EnumType.STRING : enum 이름을 데이터베이스에 저장 (ORDINAL에 비해 데이터크기 큼, enum 순서변경, 추가에 용이)

 

출처도서 : 자바 ORM 표준 JPA 프로그래밍 - 김영한 지음