JPA - 필드와 매핑 어노테이션 정리
매핑 어노테이션
@Column
: 컬럼 매핑
@Temporal
: 날짜 타입 매핑
@Enumerated
: enum 타입 매핑
@Lob
: BLOB, CLOB 매핑
@Transient
: 특정 필드를 컬럼에 매핑하지 않음
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
private LocalDate testLocalDate;
private LocalDateTime testLocalDateTime;
@Lob
private String description;
}
1. @Column 의 속성
- name : 필드와 매핑할 테이블의 컬럼이름
@Column(name = "name")
private String username;
- insertable, updatable : 등록, 변경 가능 여부
- nullable(DDL) : null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성시에 not null 제약조건이 붙는다.
- unique(DDL) :
@Table
의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. - columnDefinition(DDL) : 데이터베이스 컬럼정보를 직접 줄 수 있다.
@Column(columnDefinition = "varchar(100) default ‘EMPTY’")
private String username;
- length(DDL) : 문자 길이 제약조건, String 타입에만 사용
- precision, scale(DDL) : BigDecimal 타입에서 사용, precision은 소수점을 포함한 전체 자릿수, scale은 소수의 자릿수이다. double, float 타입에는 적용X. 아주 큰 숫자 혹은 정밀한 소수를 다룰때 사용한다.
2. @Enumerated 의 속성
@Enumerated(EnumType.STRING)
private RoleType roleType;
- EnumType.ORDINAL : enum 순서를 데이터 베이스에 저장
- EnumType.STRING : enum 이름을 데이터페이스에 저장
ORDINAL 속성은 사용하지 않는다! → 해당 enum의 상수들의 앞에 상수가 추가되어 데이터가 변경될 경우 모두 0으로 변경됨!
3. @Temporal 의 속성
날짜 타입(java.util.Date
, java.util.Calendar
)을 매핑할 때 사용
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
- TemporalType.DATE : 날짜, 데이터베이스 date 타입과 매핑(2022-08-23)
- TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑(11:11:11)
- TemporalType.TIMESTAMP : 날짜와 시간 테이터베이스 timestamp 타입과 매핑
4. @Lob 의 속성
테이터베이스 BLOB, CLOB 타입과 매핑
@LOB에는 지정할 수 있는 속성이 없다.
매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑됨
5. @Transient 의 속성
- 필드 매핑 X
- 데이터베이스에 저장X, 조회X
- 주로 메모리상에서 임시로 어떤 값을 보관하고 싶을 때 사용
참고
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
[자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com](https://www.inflearn.com/course/ORM-JPA-Basic/dashboard)
반응형