컬럼 매핑 어노테이션 정리 @Column, @Temporal, @Enumerated, @Lob, @Transient

2021. 1. 18. 13:19JPA/JPA

@Column

속성 설명 기본값
name 필드와 매핑할 테이블의 컬럼명 객체의 필드 이름
insertable
updatable
등록, 변경 가능 여부 true
nullable(DDL) not null 제약 조건 true
unique(DDL) unique 제약 조건
@Table의 uniqueConstraints와 같지만 제약 조건 이름을 설정할 수 없어 실무에선 @Table의 uniqueConstraints 사용을 권장한다.
 
columnDifinition(DDL) 데이터베이스의 컬럼 정보를 직접 설정할 수 있다. 예) varchar(100) default 'EMPTY'  
length(DDL) 문자의 길이 제약조건, String 타입에만 사용한다. 255
presicion
scale(DDL)
BigDecimal 타입에서 사용한다(BigInteger도 사용할 수 있다). precision은 소수점을 포함한 전체 자 릿수를, scale은 소수의 자릿수 다. 참고로 double, float 타입에는 적용되지 않는다. 아주 큰 숫자나 정 한 소수를 다루어야 할 때만 사용한다.  presicion = 19
scale = 2

@Enumerated

자바의 enum타입을 매핑할때 사용한다.

속성 설명 기본값
value EnumType.ORDINAL: enum 순서를 데이터베이스에 저장
EnumType.STRING: enum 이름을 데이터베이스에 저장
EnumType.ORDINAL-> 주의! 사용하지 말것. 데이터베이스에 enum의 순서가 저장되어 의미없는 데이터가 저장 됨.
사용하려면 EnumType.STRING으로 사용을 권장!

@Temporal

날짜타입(java.util.Date, java.util.Calendar)을 매핑할때 사용.

자바8에서 지원하는 LocalDate, LocalDateTime을 사용할때는 생략 가능(하이버네이트 지원)

속성 설명
value TemporalType.DATE: 날짜, 데이터베이스의 date타입과 매핑 (예: 2013-10-11)
TemporalType.TIME: 시간, 데이터베이스의 time타입과 매핑 (예: 12:00:00)
TemporalType.TIMESTAMP: 날짜와 시간, 데이터베이스의 timestamp타입과 매핑 (예: 2013-10-11 12:00:00)

@Lob

  • @Lob에는 지정할 수 있는 속성이 없음.
  • 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑
  • CLOB: String, char[], java.sql.CLOB
  • BLOB: byte[], java.sql.BLOB

@Transient

  • 데이터베이스와 상관없이 개발자가 필요에 의해 메모리에서만 사용하고 싶은 필드를 지정하고 싶을때 사용한다.
  • 데이터베이스에 저장, 조회 되지 않는다.

'JPA > JPA' 카테고리의 다른 글

연관관계 매핑  (0) 2021.01.19
기본키 매핑 어노테이션 정리 @Id, @GeneratedValue, @SequenceGenerator, @TableGenerator  (0) 2021.01.18
@Entity  (0) 2021.01.17
스키마 자동 생성  (0) 2021.01.17
flush()  (0) 2021.01.17