본문 바로가기

카테고리 없음

생성일을 자동추가: PrePersist 혹은? 생성자

 

 

 

 

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String nickname; // 별명

    @Column(nullable = false, unique = true)
    private String username; // 사용자 이름 (username)

    @Column
    private String password; // 비밀번호 (password), 소셜 사용자의 경우 null일 수 있음

//    @Column(nullable = false) 나중에 관리자 추가할거면 주석 해제
//    @Enumerated(EnumType.STRING)
//    private UserRoleEnum role; // 권한 (USER 또는 ADMIN)

    @Column(nullable = false, updatable = false)
    private LocalDateTime createdAt; // 생성일

    @Column(unique = true) // 카카오 ID 추가, 이건 카카오 ID는 유일하다는거
    private Long kakaoId; // 카카오 사용자 ID 즉, 소셜 사용자의 경우에만 사용

    // 매개변수를 받는 생성자 추가
    public User(String nickname, String username, String password, Long kakaoId) {
        this.nickname = nickname;
        this.username = username;
        this.password = password;
        this.kakaoId = kakaoId;
    }

    // 생성일 자동 설정을 위한 메서드
    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }

    public User kakaoIdUpdate(Long kakaoId) {
        this.kakaoId = kakaoId;
        return this;
    }
}

 

이렇게 PrePersist 해서 만들때 자동으로 시간이 기록되게 하느냐

 

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String nickname; // 별명

    @Column(nullable = false, unique = true)
    private String username; // 사용자 이름 (username)

    @Column
    private String password; // 비밀번호 (password), 소셜 사용자의 경우 null일 수 있음

//    @Column(nullable = false) 나중에 관리자 추가할거면 주석 해제
//    @Enumerated(EnumType.STRING)
//    private UserRoleEnum role; // 권한 (USER 또는 ADMIN)

    @Column(nullable = false, updatable = false)
    private LocalDateTime createdAt; // 생성일

    @Column(unique = true) // 카카오 ID 추가, 이건 카카오 ID는 유일하다는거
    private Long kakaoId; // 카카오 사용자 ID 즉, 소셜 사용자의 경우에만 사용

    // 매개변수를 받는 생성자 추가
    public User(String nickname, String username, String password, LocalDateTime createdAt, Long kakaoId) {
        this.nickname = nickname;
        this.username = username;
        this.password = password;
        this.createdAt = createdAt;
        this.kakaoId = kakaoId;
    }
    
    public User kakaoIdUpdate(Long kakaoId) {
        this.kakaoId = kakaoId;
        return this;
    }
}

 

 

이렇게 LocalDateTime createdAt을 public user안, 즉 생성자에 넣어주면 생성시 시간이 자동기록 된다.