본문으로 바로가기

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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();
    }
}
 
cs


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


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


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


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


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


end.


댓글을 달아 주세요