T_era
JPA 필드 매핑 상세 정리 본문
@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 |