T_era

JPA 필드 매핑 상세 정리 본문

Programing/Spring

JPA 필드 매핑 상세 정리

블스뜸 2025. 5. 15. 19:00
@Entity
@Table(name = "board")
public class Board {
    @Id
    private Long id;

    private Integer view; // @Column 생략 시 필드명과 동일 컬럼 자동 매핑

    @Column(name = "title") // 객체 필드명과 DB 컬럼명 상이하게 매핑
    private String bigTitle;

    @Enumerated(EnumType.STRING) // Enum 타입 매핑 (EnumType.STRING: Enum 이름 저장)
    private BoardType boardType;

    @Column(columnDefinition = "longtext") // DB 컬럼 타입 직접 정의 (대용량 문자열 저장)
    private String contents;

    @Temporal(TemporalType.TIMESTAMP) // 날짜 타입 매핑 (날짜, 시간 정보)
    private Date createdDate;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModifiedDate;

    @Transient // DB 컬럼과 매핑하지 않음
    private int count;

    public Board() {
    }
}

사용되는 Annotation

 
종류 설명
@Column
DB 컬럼 매핑 및 속성 설정
@Temporal 날짜 타입 매핑
@Enumerated Enum 타입 매핑
@Transient
DB 컬럼과 매핑하지 않음
@Lob
BLOB, CLOB 타입 매핑 (대용량 데이터 저장, tinytext 매핑)

@Column 속성

속성 설명 Default
name 객체 필드와 매핑할 테이블 컬럼 이름 객체 필드 이름
nullable DDL 생성 시 null 값 허용 여부 설정 TRUE
unique
DDL 생성 시 해당 컬럼에 유니크 제약 조건 설정
 
columnDefinition
DDL 생성 시 데이터베이스 컬럼 정보 직접 설정
 
length DDL 생성 시 문자 길이 제약 조건 설정 (String 타입에만 적용) 255
insertable 설정된 컬럼의 INSERT 가능 여부 TRUE
updatable 설정된 컬럼의 UPDATE 가능 여부 TRUE

@Enumerated 속성

속성 설명 Default
value EnumType.ORDINAL Enum 순서(0, 1, 2...) DB 저장
EnumType.ORDINAL
  EnumType.STRING
Enum 이름("VALUE1", "VALUE2"...) DB 저장
 

주의: 기본 설정 EnumType.ORDINAL 사용 시 Enum 값 추가에 따른 순서 변경으로 데이터 불일치 발생 가능. EnumType.STRING 사용 권장.

@Temporal 속성 값 설명 및 예시

속성 값 TemporalType 설명 예시 MySQL 타입
value TemporalType.DATE 날짜 정보 저장 2025-01-01 DATE
  TemporalType.TIME 시간 정보 저장 12:00:00 TIME
  TemporalType.TIMESTAMP 날짜 및 시간 정보 저장 2025-01-01 12:00:00 DATETIME

참고: 최신 Hibernate 버전에서 LocalDate, LocalDateTime 타입에 @Temporal 어노테이션 생략 가능.

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

연관관계 매핑  (0) 2025.05.16
JPA 기본 키(Primary Key) 매핑  (0) 2025.05.15
JPA @Entity와 @Table 어노테이션 정리  (0) 2025.05.15
JPA 관련 설정  (0) 2025.05.15
변경 감지(Dirty Checking)  (0) 2025.05.15