Programming/JPA

[JPA] 필드와 컬럼 매핑 - 엔티티(Entity) 매핑 (3)

soeun2537 2024. 7. 25. 07:33
해당 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성한 글입니다.

 

✅ 필드와 컬럼 매핑

 @Column

  • 객체 필드를 테이블 컬럼에 매핑한다.
속성 기능 기본값
name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름
nullable(DDL) null 값의 허용 여부를 설정한다. true
unique(DDL) 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다.  
columnDefinition(DDL) 데이터베이스 컬럼 정보를 직접 줄 수 있다.  
length(DDL) 문자 길이 제약 조건, String 타입에만 사용한다. 255
precision / scale(DDL) BigDecimal 타입에서 사용한다. 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다. precision=19 / scale=2
insertable(거의 사용X) 엔티티 저장 시 이 필드도 같이 저장한다. true
updatable(거의 사용X) 엔티티 수정 시 이 필드도 같이 수정한다. true
table(거의 사용X) 하나의 엔티티를 두 개 이상의 테이블에 매핑할 때 사용한다. 현재 클래스가 매핑된 테이블

 

 @Temporal

  • 자바 날짜 타입(Java.util.Date, java.util.Calendar)을 매핑할 때 사용한다.
속성 기능 기본값
value - TemporalType.Date: 날짜, 데이터베이스 date 타입과 매핑
- TemporalType.TIME: 시간, 데이터베이스 time 타입과 매핑
- TemporalType.TIMESTAMP: 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
 

 

 @Enumerated

  • 자바의 enum 타입을 매핑할 때 사용한다.
속성 기능 기본값
value - EnumType.ORDINAL: enum 순서를 데이터베이스에 저장
- EnumType.STRING: enum 이름을 데이터베이스에 저장
EnumType.ORDINAL

⚠️ ORDINAL은 주의해서 사용해야 한다.

 

 @Lob

  • 데이터베이스 BLOB, CLOB 타입과 매핑한다.
    • CLOB: 문자(예: String, char[], java.sql.CLOB)
    • BLOB: 나머지(예: byte[], java.sql.BLOB)

 

 @Transient

  • 메모리상에서만 임시로 어떤 값을 보관하고 싶은 경우, 데이터베이스에 저장, 조회하지 않고 매핑하지 않을 Field에 사용한다.

 

 

📍 참고