4.7 필드와 컬럼 매핑: 레퍼런스
분류 | 매핑 어노테이션 | 설명 |
필드와 컬럼 매핑 | @Column | 컬럼을 매핑한다. |
@Enumerated | 자바의 enum타입을 매핑한다. | |
@Temporal | 날짜 타입을 매핑한다. | |
@Lob | BLOB, CLOB 타입을 매핑한다. | |
@Transient | 특정 필드를 데이터베이스에 매핑하지 않는다. | |
기타 | @Access | JPA가 엔티티에 접근하는 방식을 지정한다. |
1) @Column
객체 필드를 테이블 컬럼에 매핑한다.
속성 | 기능 | 기본값 |
name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
nullable | null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. | true |
unique | @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. | |
columnDefinition | 데이터베이스 컬럼 정보를 직접 줄 수있다. | 필드의 자바 타입과 방언 정보를 사용해서 적절한 컬럼 타입을 생성한다. |
length | 문자 길이 제약조건, String 타입에만 사용한다. | 255 |
precision,scale | BigDecimal 타입에서 사용한다. pricision은 소수점을 포함한 전체 자릿수를, scale은 소수의 자릿수다. 참고로 double,float타입에는 적용되지 않는다. 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다. | precision =19, scale=2 |
@Column을 생략한다면?
int data1; // @Column 생략, 자바기본타입 data1 integer not null // 생성된 DDL Integer data2; // @Column 생략, 객체 타입 data2 integer // 생성된 DDL @Column int data3 //@Column 사용, 자바 기본 타입 data3 integer //생성된 DDL -> 자바기본 타입에 @Column을 사용하면 nullable = true가 기본값이므로 nullable = false로 지정하는 것이 안전하다. |
2) Enumerated
자바의 enum타입을 매핑할 때 사용한다.
속성 | 기능 | 기본값 |
value | - EnumType.ORDINAL: enum 순서를 데이터베이스에 저장 - EnumType.STRING: enum 이름을 데이터베이스에 저장 |
EnumType.ORDINAL |
enum RoleType{
ADMIN, USER
}
@Enumerated(EnumType.STRING)
priavate RoleType roleType;
member.setRoleType(RoleType.ADMIN); //-> DB에 문자 ADMIN으로 저장됨
3) @Temporal
날짜타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용한다.
속성 | 기능 | 기본값 |
value | - TemporalType.DATE : 날짜, 데이터베이스 date 타입과 매핑 (예: 2013-10-11) - TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑 (예: 11:11:11) - TemporalType.TIMESTAMP : 날짜와 시간, 데이터베이스 timestamp 타입과 매핑 (예: 2013-10-11 11:11:11) |
TemporalType은 필수로 지정해야한다. |
@Temporal을 생략하면 자바의 Date와 가장 유사한 timestamp로 정의된다.
4) @Lob
데이터베이스 BLOB, CLOB 타입과 매핑한다.
필드타입이 문자면 CLOB으로 매핑하고 나머지는 BLOB으로 매핑한다
5) @Transient
이 필드는 매핑하지 않는다. 객체에 임시로 어떤 값을 보관하고 싶을 때 사용한다.
6) @Access
JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
- 필드 접근 : AccessType.FIELD
- 프로퍼티 접근 : AccessType.PROPERTY
'개발 도서 읽기 > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[5장] 5.3~5.7 양방향 연관관계 (0) | 2024.11.12 |
---|---|
[5장]5.1~5.2 단방향 연관관계 (2) | 2024.11.11 |
[4장]4.1~4.6 엔티티 매핑 (3) | 2024.11.09 |
[3장] 영속성 관리 (0) | 2024.11.08 |
[2장] JPA 시작 (0) | 2024.11.07 |