본문 바로가기
JAVA

[JPA] JPA 필드와 컬럼 매핑

by 고 민 2024. 1. 5.
728x90
반응형

필드명과 컬럼 매핑 

@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와 매핑되지 않게 해주는 어노테이션. 

 

728x90
반응형