본문 바로가기

BE/JPA

[JPA] 매핑 어노테이션 종류

 

 

 

 

 

매핑 어노테이션 종류

어노테이션 설 명
@Column 컬럼 매핑
@Temporal 날짜 타입 매핑
ex) @Temporal(TemporalType.TIMESTAMP)


@Enumerated enum 타입 매핑
ex) @Enumerate(EnumType.STRING)
@LOB BLOB, CLOB 매핑 ( 대형 오브젝트를 의미 )
( String 자료형을 @Lob 어노테이션을 사용해 매핑하면 DB 에는 자동으로 CLOB 으로 매핑된다 )
@Transient 특정 필드를 컬럼과 매핑하고싶지 않은 경우 사용
( 데이터베이스에 저장 X, 조회 X )
주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용

 

 

 

 

 

@Column 속성

속성 설명 기본 값
name 필드와 매핑할 테이블 컬럼 이름

ex) @Column(name = "user_id")
객체의 필드 이름
insertable
updateable
등록, 변경 가능 여부

ex) @Column(updatable = false)
TRUE
nullable (DDL) null 값의 허용 여부를 설정
false 로 설정하면 DDL 생성 시에 not null 제약 조건이 붙는다

ex) @Column(nullable = false)
 
unique (DDL) @Table 의 uniqueConstraints 와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용

ex) @Column(unique = true)
( 유니크 제약조건의 이름이 랜덤으로 생성되므로 잘 사용하지 않는다 )
 
columnDefinition (DDL) 데이터베이스 컬럼 정보를 직접 줄 수 있다

ex) @Column(columnDefinition = "varchar(100) default 'EMPTY'")
=> varchar(100) 으로 컬럼 생성, 기본 값은 'EMPTY' 로 지정된다
필드의 자바 타입과 방언 정보를 사용
length (DDL) 문자 길이 제약조건, String 타입에만 사용한다

ex) @Column(length = 10)
=> varchar(10) 으로 컬럼이 생성된다
255
precision,
scale (DDL)
BigDecimal 타입에서 사용한다 ( BigInteger 도 사용 가능 )  

 

 

 

 

 

@Enumerated 속성

※ 주의 ! ORDINAL 은 사용 X ( 기본 값이기 때문에 변경해서 사용!!! ) ※

속성 설명 기본 값
value • EnumType.ORDINAL : enum 순서를 데이터베이스에 저장

• EnumType.STRING : enum 이름을 데이터베이스에 저장

ex) @Enumerated(EnumType.STRING)
EnumType.ORDINAL

 

 

 

 

 

@Temporal 속성

JAVA 에서 자료형을 LocalDate, LocalDateTime 을 사용하는 경우는 자동으로 매핑해준다

즉, 속성 생략이 가능 ( 최신 하이버네이트 지원 )

LocalDate : DB 의 DATE 와 매핑

LocalDateTime : DB 의 TIMESTAP 와 매핑

속성 설명 기본 값
value TemporalType.DATE : 날짜, 데이터베이스의 date 타입과 매핑
( 예 : 2024-05-20 )

TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑
( 예 : 10:57:23 )

TemporalType.TIMESTAMP : 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
( 예 : 2024-05-20 10:57:23 )
 

 

728x90

 

728x90