-
JPA 타임스탬프(TimeStamp) 자동저장 하는 방법프로그래밍/JPA 2022. 12. 23. 23:05
JPA를 사용하는 중에 필요한 기능으로, DB상에 저장된 시간을 기록하고 싶었다.
(훗날, 히스토리를 갖고 원하는 날짜의 데이터를 찾을 방법이 이것뿐 .. )
하지만 몇몇 자료를 찾았으나 제대로 나오는건 없어 제대로 나온걸 기록한다.
@Column @CreationTimestamp @Temporal(TemporalType.TIMESTAMP) Date createTime;
@Entity 어노테이션이 작성된 클래스의 필드변수에 다음과 같이 사용한다.
반환 타입은 Json인 변수를 만들고, 해당 변수는 DB상의 컬럼으로 등록하기 위해 @Column 어노테이션을 사용한다.
@Temporal 어노테이션을 사용하여 해당 데이터가 타임스탬프를 저장한다는 것을 의미한다.
해당 어노테이션은 java.util.Data, java.util.Calendar 유형의 속성에 대해 지정해야한다.
(본인은 코드상에 보이는 것과 같이 Date를 사용하였다)
해당 어노테이션의 인자로 들어가는건 3종류가 존재한다.
- TemporalType.TIME ( 현재 시점의 시간만 사용한다 )
- TemporalType.DATE ( 현재 시점의 날짜만 사용한다 )
- TemporalType.TIMESTAMP (default, 현재 시점의 시간과 날짜 둘 다 사용한다.)
@CreationTimestamp 어노테이션을 사용하여, 날짜값을 넣어준다.
해당 값은 일반적으로 정확히 한번 현재 VM날짜로 저장된다.
해당 어노테이션은 다음과 같은 타입에 사용할 수 있다.
- java.util.Date
- java.util.Calendar
- java.sql.Date
- java.sql.Time
- java.sql.Timestamp
- java.time.Instant
- java.time.LocalDate
- java.time.LocalDateTime
- java.time.LocalTime
- java.time.MonthDay
- java.time.OffsetDateTime
- java.time.OffsetTime
- java.time.Year
- java.time.YearMonth
- java.time.ZonedDateTime
JPA를 사용하지만 너무 어렵다..
단순히 어노테이션의 종류가 많아서 어려운건지 항상 생각이든다.