본문 바로가기

Spring/Spring Data JPA

Spring Data Jpa에서 LocalDateTime이용해서 자동으로 createdAt만들기

728x90

Spring Data Jpa에서 LocalDateTime이용해서 자동으로 createdAt만들기

 

개요

쇼핑몰에서 사용자가 물건을 구매 한다고 했을 때 언제 구매를 했는지 그리고 결제를 했다면 언제 결제를 했는지 등 날짜, 시간에 관한 정보가 꼭 필요한 table들이 있습니다. 여기에서 트렌젝션이 발생한 날짜와 시간을 기록하게 하고 싶을 때 아래와 같이 Object를 만들어 주면 날짜를 현재 시간으로 만들어서 기록 할 수 있습니다.

 

import lombok.Data;
import javax.persistence.*;
import java.time.LocalDateTime;

@Data
@Entity
public class Salary {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private long userId;
    private String userName;
    private double salary;


    private LocalDateTime createdAt;


    public Salary(long userId, String userName, double salary) {
        this.userId = userId;
        this.userName = userName;
        this.salary = salary;
    }

    @PrePersist
    public void createdAt() {
        this.createdAt = LocalDateTime.now();
    }
}
 

 

사용한 버젼은 Spring Boot 2.0.2이고 hibernate는 같이 포함 되어 있는 5.2버젼입니다.

 

이게 낮은 버젼에서는 Jpa가 자바 1.8에서 나온 LocalDateTime을 지원하지 않아서 컨버터 같은걸 따로 만들어서 어노테이션을 붙여줘야 했는데 그냥 하니까 됩니다.

 

위에 18번줄에 그냥 다른 처리를 하지 않고 그냥 놔뒀는데 DB에 잘 들어갑니다.

 

그리고 createdAt을 만들 때 @PrePersist를 붙여놓으면 db에 넣을때 저 어노테이션이 붙은 로직을 타기 때문에 날짜가 만들어집니다.

 

MySql에 붙였고 MySql의 created_at의 Type은 DATETIME으로 정해집니다.

 

end.

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.