twocowsong

@Temporal 본문

IT/JPA

@Temporal

WsCode 2022. 5. 20. 23:36

깃허브 정리 URL : https://github.com/sWineTake/jpa.git

 

GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한

자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.

github.com

날짜 타입(java.util.Date, java.util.Calender)을 매핑할 때 사용합니다.

 

아래와같이 엔티티에 3개의 컬럼을 생성하였습니다.

@Temporal(TemporalType.DATE)
private Date date; // 날짜

@Temporal(TemporalType.TIME)
private Date time; // 시간

@Temporal(TemporalType.TIMESTAMP)
private Date timestamp; // 날짜와 시간

위에 엔티티를 기반으로 생성된 DDL문은 아래와 같습니다.

create table BoardTemporal (  
   date date,
   time time,
   timestamp datetime(6)
)

자바의 타입에는 년월일 시분초가 있지만 DB에는 Date(날짜), time(시간), datetime(날짜와 시간) 세 가지 타입이 별도로 존재합니다.

 

@Temporal을 생략하면 자바의 Date와 가장 유사한 timestampe로 정의됩니다.

하지만 timestampe 대신에 datetime을 예약어로 사용하는 DB도 있습니다.

DB 방언 덕분에 애플리케이션코드는 변경하지 않아도 됩니다.

 

datetime : MySql

timestamp : H2, 오라클, PostgreSQL

 

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

@Transient  (0) 2022.05.21
@Lob  (0) 2022.05.21
@Enumerated  (0) 2022.05.19
필드와 컬럼 매핑 : @Column  (0) 2022.05.18
기본 키 매핑 정리  (0) 2022.05.16