아래와 같은 요구 사항이 추가되었다.
@Entity
public class Member {
@Id
private Long id;
// DB의 칼럼 명 커스텀 가능
@Column(name = "name")
private String username;
private Integer age;
// DB에는 enum 타입이 없다.
@Enumerated(EnumType.STRING)
private RoleType roleType;
// 날자 타입 매핑
// DB는 DATE, TIME, TIMESTAMP로 나뉜다.
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
// varchar를 넘어서는 큰 컨텐츠를 넣고 싶을 때 사용한다.
// String 타입이면 DB에서 clob으로 생성된다.
@Lob
private String description;
// getter, setter
}
insertable, updatable
해당 column이 수정됐을 때 DB에 insert, update를 할 건지 결정한다.
-> insert, update 문이 나갈 때 해당 칼럼을 반영할 것인지를 의미한다.
-> 만약 updateble = false
라면 해당 칼럼은 절대 변경되지 않는다.
true : 기본 값
자바 enum 타입을 매핑할 때 사용한다.
ORDINAL은 사용하지 말자.
ex) enum 타입에 Admin, User가 있다. -> 이 때는 Admin : 0, User : 1로 매핑된다.
이 후 SuperAdmin, Admin, User로 변경되었다. -> 기존에 Admin이 0이었는데, SuperAdmin : 0, Admin : 1이 된다.
=> 0은 Admin을 의미했으나 현재는 SuperAdmin이 되었으므로 혼동이 온다.
날짜타입 java.util.Date
, java.util.Calendar
을 매핑할 때 사용
LocalDate
, LocalDateTime
을 사용할 때는 생략이 가능하다.(최신 하이버네이트 지원)데이터베이스 BLOB, CLOB 타입과 매핑
String, char[], java.sql.CLOB
byte[], java.sql.BLOB
필드 매핑을 하지 않을 때 사용한다.
DB에 저장 X, 조회 X
주로 메모리상에서만 ㅇ미시로 어떤 값을 보관하고 싶을 때 사용한다.
@Transient
private Integer temp;
참고 :
김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.