들어가며
4강은 내용이 많아 1편과 2편으로 나눠 진행하였다. 4-2에 내용은 필드와 컬럼 매핑 시 사용되는 어노테이션에 관한 내용이었다. 크게 어려운 내용은 없었고 다시 한번 해당 어노테이션들의 정의에 대해 알아보는 시간이었다.
4.7 필드와 컬럼 매핑 : 레퍼런스
- 필드와 컴럼 매핑 : @Column, @Enumerated, @Temporal, @Lob, @Transient, @Access
- @Column
- 객체 필드를 테이블 컬럼에 매핑
- 속성 중에 name, nullable이 주로 사용
- insertable 속성은 엔티티 저장 시 이 필드도 같이 저장한다. false 설정 시 읽기 전용 (기본값 true)
- updatable 속성은 엔티티 수정 시 이 필드도 같이 수정한다. false 설정 시 데이터베이스에 수정하지 않음. (기본값 true)
- table 속성은 하나의 엔티티를 두 개 이상의 테이블에 매핑항 때 사용
- nullable 속성은 null 값의 허용 여부를 설정하며 false 설정 시 DDL 생성 시 not null 제약조건이 붙는다
- unique 속성은 @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약 조건을 걸때 사용
- columnDefinition 속성은 디비 컬럼 정보를 직접 줄 수 있다.
- length 속성은 문자 길이 제약 조건이며 String 타입에만 사용 가능
- precision 과 scale 속성은 BigDecimal 타입에서 사용한다. precision은 소수점을 포함한 전체 자릿수를, scale은 소수의 자릿수다.
- @Enumerated
- enum 타입을 매핑할때 사용
- value 속성은 EnumType.ORDINAL - enum 순서를 디비에 저장과 EnumType.STRING - enum 이름을 디비에 저장 두가지가 있다.
- 기본값은 ORDINAL인데 사용 시에는 이미 저장된 enum의 순서를 변경할 수 없으므로 STRING 사용하는 것은 권장한다.
- @Temporal
- 날짜 타입 매핑시 사용
- value 속성 값으로는 TemporalType.DATE, TemporalType.TIME, TemporalType.TIMESTAMP 이 있다.
- 해당 속성 값은 필수로 지정해줘야 한다.
- @Lob
- 따로 속성 값이 없다.
- 대신 매핑하는 필드 타입이 문자면 CLOB로 매핑 나머지는 BLOB으로 매핑한다
- @Transient
- 이 필드는 매핑하지 않는다.
- 따라서 디비에 저장하지 않고 조회하지도 않는다.
- 객체에 임시로 어떤 값을 보관하고 싶을 때 사용
- @Access
- Jpa가 엔티티 데이터에 접근하는 방식을 지정한다.
- 필드 접근 : AccessType.FIELD로 지정, 필드에 직접 접근하며 필드 접근 권한이 private여도 접근이 가능
- 프로퍼티 접근 : AccessType.PROPERTY로 지정, 접근자를 사용한다.
- @Id가 필드에 있다면 필드 접근으로 설정한 것과 같아 @Access 어노테이션 생략 가능
'Book' 카테고리의 다른 글
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-2) 연관관계 매핑 기초 (0) | 2022.08.07 |
---|---|
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-1) 연관관계 매핑 기초 (0) | 2022.08.01 |
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (4-1) 엔티티 매핑 (0) | 2022.07.20 |
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (3) JPA 시작 (0) | 2022.07.13 |
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (2) JPA 시작 (0) | 2022.07.10 |
댓글