- 필드와 컬럼 매핑에 필요한 annotation과 속성에 대해 파악한다.
- @Id
- @Column
- @Enumerated
- @Lob
- @Transient
@Temporal
- @Entity가 붙은 클래스는 Primary Key를 필수로 가져야한다.
- 자세한 내용은 JPA 기본 키 생성에서 다룬다.
- @Column은 필드와 매핑할 테이블의 컬럼의 여러 속성을 설정한다.
@Column 속성
- name : 필드와 매핑할 테이블의 컬럼 이름
- default는 객체의 필드명이다.
- insertable, updatable : 등록 가능 여부, 수정 가능 여부
- default = true
- nullable : null 값의 허용 여부
- default = true
- columnDefinition : DB의 컬럼 정보를 직접 설정
- length : String type에만 사용하며, 문자열의 길이 제한
- default = 255
- precision, scale : 소수점을 포함한 전체 자릿수, 소수의 자릿수 제한
- default of precision = 19 , default of scale : 2
- Java의 enum type을 매핑할 때 사용한다.
@Enumerated 속성
- EnumType.ORDINAL (default) : enum의 순서를 DB에 저장
- EnumType.STRING : enum의 이름를 DB에 저장
- ❗️반드시 EnumType.STRING으로 바꿔서 사용하자.❗️
- 순서로 표기할 경우, enum에 필드가 추가된다면 순서가 꼬이게 된다.
- DB의 BLOB, CLOB 타입과 매핑된다.
- 문자는 CLOB, 나머지는 BLOB과 매핑된다.
- CLOB : 긴 문자열 데이터를 저장하기 위한 Type
- BLOB : 이진 데이터를 저장하기 위한 Type
- 속성은 존재하지 않는다.
- 컬럼에 매핑하지 않을 필드에 사용한다. 즉, DB에 저장도 조회도 하지 않는다.
주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용한다.
@Temporal을 이용해 표기했었으나, 최신 hibernate는 아래 기능을 제공한다.
- LocalDate : 날짜 표기
- LocalTime : 시간 표기
- LocalDateTime : 날짜 시간 표기