필드명과 컬럼 매핑
@Column
name : 엔티티 필드와 매핑될 DB테이블 컬럼명을 명시해준다.
insertable, updateable : 등록 변경 가능 여부.
false일경우 업데이트시에도 DB에 반영되지 않는다.
nullable :
false : not null 제약조건
unique : 유니크 제약조건을 건다.
제약조건명 지정 불가능하기 때문에 잘 사용하지 않는 옵션.
JPA가 알아서 Unique 제약 조건명을 부여하는데, 의미가 명확하지 않고 읽기도 불편해서 오류가 났을때 파악이 어렵다.
class에 등록하는 @Table의 uniqueConstraints 속성으로 유니크 조건을 걸면 제약조건명 까지 설정 할 수 있기 때문에 @Table 어노테이션의 uniqueConstraints을 이용하자.
length : 문자의 길이를 제한할 수 있다. String 타입에서만 사용 가능.
columnDefinition : 컬럼 정의를 직접 할 수 있는 옶견.
엔티티에 Integer, String등 해당하는 타입과 가장 적절한 타입으로 DB에 생성된다 .
@Enumurated
ODINARY : enum 순서를 db에 저장한다.
enum타입 순서가 바뀔경우 문제가 생기기 때문에 절대로 사용해서는 안되는 옵션.
EX)
enum JOB { 대리 , 과장 }
ODINARY 속성의 경우 이를 0, 1 로 저장한다.
하지만 추후 주임이라는 직급이 대리 직급 앞으로 추가되는 경우 ENUM의 순서는 {주임,대리, 과장} 이 되고, 주임을 0번으로 저장하게된다.
이전에 대리 직급의 값이 0이었으므로 주임 추가 이전의 대리들은 전부 주임 상태가 된다.
STRING : enum 이름을 db에 저장한다.
@Temporal
날짜타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용.
JAVA8이후부터는 LocalDate(연월), LocalDateTime(연월일)타입이 생겨서
LocalDates는 date타입으로, LocalDateTime은 timestamp 타입으로 매핑해 주기 때문에 지금은 크게 쓸 필요가 없다.
@Lob
매핑 타입이 문자면 CLOB, 나머진 BLOB매핑해주기 때문에 속성이 없다.
@Trasient
엔티티 컬럼을 DB와 매핑되지 않게 해주는 어노테이션.
'JAVA' 카테고리의 다른 글
[JPA] 영속성 컨텍스트의 이점 - 1차 캐시 (1) | 2024.01.10 |
---|---|
[JPA] 엔티티의 생명주기 - 영속, 비영속, 준영속, 삭제 (0) | 2024.01.10 |
[JPA] 엔티티 매핑 - 기본 키 매핑 (0) | 2024.01.06 |
[JPA] JPA와 영속성 컨텍스트(Persistent Context) (0) | 2023.12.29 |
[JPA] JPA, MAVEN 개발 환경 설정 (0) | 2023.12.29 |