필드와 컬럼 매핑: 레퍼런스
@Column
<속성 정리>
- name : 필드와 매핑할 테이블의 컬럼 이름
- nullable : null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약 조건이 붙는다.
- unique : 한 컬럼에 유니크 제약 조건을 걸 때 사용한다. (두 컬럼 이상을 걸 때는 @Table.uniqueConstraints를 사용한다.)
- columnDefinition : 데이터베이스 컬럼 정보를 직접 줄 수 있다.
- length : 문자 길이 제약 조건(String 타입에만 사용)
- precision, scale : 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다. BigDecimal, BigInteger 타입에서 사용하며, precision은 소수점을 포함한 전체 자릿수를, scale은 소수의 자릿수다.
@Enumerated
- 자바의 enum 타입을 매핑할 때 사용한다.
- value 속성 : EnumType.ORDINAL / STRING => 각각 enum 순서 / 이름을 데이터베이스에 저장
@Temporal
- 날짜 타입을 매핑할 때 사용한다.
- value 속성 : TemporalType.DATE / TIME / TIMESTAMP => 각각 날짜, 데이터베이스 date 타입과 매핑 / 시간, 데이터베이스 time 타입과 매핑 / 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
@Lob
- 데이터베이스 BLOB, CLOB 타입과 매핑한다.
- 매핑하는 필드 타입이 문자(String, char[], java.sql.CLOB)면 CLOB으로 매핑하고 나머지(byte[], java.sql.BLOB)는 BLOB으로 매핑한다.
@Transient
- 이 필드는 매핑하지 않는다. => 데이터베이스에 저장하지 않고 조회하지도 않는다.
@Access
- JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
- AccessType.FIELD : 필드 접근 => 필드에 직접 접근한다. 필드 접근 권한이 private이어도 접근할 수 있다.
- AccessType.PROPERTY : 프로퍼티 접근 => 접근자 사용
@Entity
public class Member {
@Id // 필드 직접 접근
private String id;
@Transient
private String firstName;
@Transient
private String lastName;
@Access(AccessType.PROPERTY) // 프로퍼티 접근
public String getFllName() {
return firstName + lastName;
}
...
}
'공부 기록 > Java' 카테고리의 다른 글
[이펙티브 자바 3/E] 아이템12 - toString을 항상 재정의하라 (0) | 2023.07.31 |
---|---|
[이펙티브 자바 3/E] 아이템11 - equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2023.07.31 |
[JPA] 4장 - 엔티티 매핑(1) (0) | 2023.07.30 |
[이펙티브 자바 3/E] 아이템10 - equals는 일반 규약을 지켜 재정의하라 (0) | 2023.07.21 |
[이펙티브 자바 3/E] 아이템9 - try-finally보다는 try-with-resources를 사용하라 (0) | 2023.07.19 |