Entity_Mapping[필드와 컬럼 매핑]
Entity Mapping
필드와 컬럼 매핑
JPA에서 엔티티 클래스와 필드와 DB 테이블의 컬럼 간의 매핑은 @Column어노테이션을 사용하여 정의합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Entity(name = "testUser")
@Table
public class testUser {
@Id
@Column(name = "id")
private Long id;
@Column(name = "user_name")
private String name;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
//Getter, Setter…
}
매핑 어노테이션 정리
@Column
- 컬럼을 매핑할 때 사용합니다.
속성
- name
- 필드와 매핑할 테이블의 컬럼 이름을 작성합니다.
- 기본값은 필드 이름입니다.
- insertable, updatable
- 등록, 변경 가능 여부를 설정합니다.
- 기본값은 TRUE입니다.
- nullable(DDL)
- null 값의 허용 여부를 설정합니다.
- unique(DDL)
- 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용합니다.
- columnDefinition(DDL)
- 데이터베이스 컬럼 정보를 직접 줄 수 있습니다.
- length(DDL)
- 문자 길이 제약조건을 설정합니다. ( String 타입에만 사용이 가능합니다. )
- precision, scale(DDL)
- BigDecimal타입에서만 사용이 가능합니다.
- 아주큰 숫자, 정밀한 소수를 다룰 때 사용합니다.
@Temporal
- 날짜 타입(Date, Calendar)을 매핑할 때 사용합니다.
속성
- TemporalType.DATE
- 날짜, DB date 타입과 매핑할 때 사용합니다.
- TemproalType.TIME
- 시간, DB time타입과 매핑할 때 사용합니다.
- TemproalType.TIMESTAMP
- 날짜와 시간, DB timestamp 타입과 매핑할 때 사용합니다.
@Enumerated
- enum타입을 매핑할 때 사용합니다.
속성
- EnumType.ORDINAL
- enum 순서를 DB에 저장할때 사용합니다.
- EnumType.STRING
- enum이름을 DB에 저장합니다. 하지만 @Enumerated을 사용할 때는 ORDINAL을 사용하면 안됩니다. ( 기본값이 ORDINAL)
@Lob
- BLOB, CLOB을 매핑 때 사용합니다. @Lob에는 지정할 수 있는 속성이 없습니다. 매핑하는 필드 타입이 문자면 CLOB를 사용하고, 나머지는 BLOB를 사용합니다.
@Transient
특정 필드를 컬럼에 매핑하지 않습니다.
필드에 매핑하지 않습니다.
또한 DB에 저장하지도 않고, 조회되지도 않습니다.
주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을때 사용합니다.
This post is licensed under CC BY 4.0 by the author.