4.7 필드와 컬럼 매핑 : 레퍼런스
분류 | 매핑 어노테이션 | 설명 |
---|---|---|
필드와 컬럼 매핑 | @Column | 컬럼을 매핑한다. |
@Enumerated | 자바의 enum 타입을 매핑한다. | |
@Temporal | 날짜 타입을 매핑한다. | |
@Lob | BLOB, CLOB 타입을 매핑한다. | |
@Transient | 특정 필드를 데이터베이스에 매핑하지 않는다. | |
기타 | @Access | JPA가 엔티티에 접근하는 방식을 지정 |
@Transient
데이터베이스에 저장하지 않고 조회하지도 않는다.
객체에 임시로 어떤 값을 보관하고 싶을 때 사용
@Access
JPA가 엔티티 데이터에 접근하는 방식을 지정
- 필드 접근
- AccessType.FIELD로 지정
- 필드에 직접 접근
private
이어도 접근
- 프로퍼티 접근
- AccessType.PROPERTY로 접근
- 접근자(Getter)를 사용
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;
@Access(AccessType.FIELD)
@Entity
public class Professor {
public static String LOCAL_AREA_CODE = "999";
@Id
private int id;
@Transient
private String phoneNum;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPhoneNumber() {
return phoneNum;
}
public void setPhoneNumber(String num) {
this.phoneNum = num;
}
@Access(AccessType.PROPERTY)
@Column(name = "PHONE")
protected String getPhoneNumberForDb() {
if (null != phoneNum && phoneNum.length() == 10)
return phoneNum;
else
return LOCAL_AREA_CODE + phoneNum;
}
protected void setPhoneNumberForDb(String num) {
if (num.startsWith(LOCAL_AREA_CODE))
phoneNum = num.substring(3);
else
phoneNum = num;
}
}