| 객체와 테이블 매핑 | @Entity , @Table |
| 필드와 컬럼 매핑 | @Column |
| 기본 키 매핑 | @Id |
| 연관관계 매핑 | @ManyToOne , @JoinColumn |
| 어노테이션 | 설명 |
|---|---|
| @Column | 컬럼 매핑 |
| @Temporal | 날짜 타입 매핑 |
| @Enumerated | enum 타입 매핑 |
| @Lob | BLOB, CLOB 매핑 |
| @Transient | 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) |
@Column
name
필드와 매핑할 테이블의 컬럼명
기본값 - 객체의 필드 이름
insertable , updatable
등록, 변경 가능 여부
기본값 - TRUE
nullable(DDL)
null 값의 허용 여부 설정
false는 DDL 생성 시에 not null 제약조건이 붙음
unique(DDL)
@Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용
columnDefinition (DDL)
DB 컬럼 정보를 직접 설정
ex) varchar(100) default ‘EMPTY'
length(DDL)
문자 길이 제약조건, String 타입에만 사용
기본값 - 255
precision, scale(DDL)
BigDecimal 타입에서 사용 (BigInteger도 사용 가능)
precision은 소수점을 포함한 전체 자릿수, scale은 소수의 자릿수
(double, float 타입은 적용 X)
아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용)
기본값 - precision=19, scale=2
@Temporal
날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용
LocalDate, LocalDateTime을 사용할 때는 생략 가능 (최신 hibernate 지원)
TemporalType.DATE : 날짜, 데이터베이스 date 타입과 매핑
ex. 2013–10–11
TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑
ex. 11:11:11
TemporalType.TIMESTAMP : 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
ex. 2013–10–11 11:11:11
@Enumerated
자바 enum 타입 매핑시 사용
EnumType.ORDINAL : enum 순서를 데이터베이스에 저장 (기본값)
EnumType.STRING : enum 이름을 데이터베이스에 저장
@Lob
데이터베이스 BLOB, CLOB 타입과 매핑
지정할 수 있는 속성이 없다
매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑됨