필드와 컬럼 매핑
@Column
객체 필드를 테이블 컬럼에 매핑한다
속성
- name: 필드와 매핑할 테이블의 컬럼 이름. 기본값은 객체의 필드 이름
- nullable: null 값의 허용 여부를 설정한다 (DDL)
- unique: 특정 컬럼에 유니크 제약조건을 설정한다 (DDL)
- length: 문자 길이 제약 조건. String 타입에만 사용한다 (DDL)
- precision, scale: BigDecimal, BigInteger에서 사용한다. 전체 자릿수와 소수 자릿수를 설정한다 (DDL)
@Enumerated
자바의 enum을 사용하기 위해서는 @Enumerated 어노테이션으로 매핑해야 한다
속성
- value:
- EnumType.ORDINAL:
enum에 정의된 순서대로 index 값이 데이터베이스에 저장된다
데이터의 크기를 줄일 수 있지만 이미 저장된 enum의 순서를 변경할 수 없다
- EnumType.STRING:
enum 이름 그대로 문자로 데이터베이스에 저장된다
데이터의 크기가 비교적 크지만 enum의 순서가 바뀌거나 추가되어도 안전하다
@Temporal
날짜 타입을 매핑할 때 사용한다
속성
- value:
- TemporalType.DATE: 날짜, 데이터베이스 date 타입과 매핑 (2013-10-11)
- TemporalType.TIME: 시간, 데이터베이스 time 타입과 매핑 (11:11:11)
- TemporalType.TIMESTAMP: 날짜와 시간, 데이터베이스 timestamp 타입과 매핑 (2013-10-11 11:11:11)
@Lob
데이터베이스 BLOB, CLOB 타입과 매핑한다
매핑하는 필드 타입이 문자이면 CLOB으로 나머지는 BLOB으로 매핑한다
@Transient
해당 필드는 매핑하지 않는다
즉, 데이터베이스에 저장하지 않고 조회하지 않는다
@Access
JPA 엔티티가 데이터에 접근하는 방식을 지정한다
필드 접근
- AccessType.FIELD로 지정된다
- 필드에 직접 접근하고 private이어도 접근할 수 있다
프로퍼티 접근
- AccessType.PROPERTY로 지정한다
- 접근자(Getter)를 사용한다
@Entity
@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(
name = "NAME_AGE_UNIQUE",
columnNames = {"NAME", "AGE"} )})
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME", nullable = false, length = 10)
private String username;
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;
...
}
'스터디 > JPA' 카테고리의 다른 글
연관관계 매핑 기초 - (2) (0) | 2025.02.09 |
---|---|
연관관계 매핑 기초 - (1) (0) | 2025.02.09 |
엔티티 매핑 - (1) (0) | 2025.02.08 |
영속성 관리 - (2) (0) | 2025.02.07 |
영속성 관리 - (1) (0) | 2025.02.07 |