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;
  }
}