๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring

[Spring] JPA Auditing - BaseTimeEntity

JPA Auditing - BaseTimeEntity

๐Ÿ“ JPA Auditing ์‚ฌ์šฉํ•˜๊ธฐ

  • jpa๊ฐ€ ์ œ๊ณตํ•˜๋Š” audit ๊ธฐ๋Šฅ์œผ๋กœ, ์‹œ๊ฐ„์— ์ž๋™์œผ๋กœ ๊ฐ’์„ ๋„ฃ์–ด์คŒ > ์ž๋™์œผ๋กœ ์‹œ๊ฐ„์„ ๋งตํ•‘ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ๋„ฃ์–ด์คŒ
  • ๋ฐ์ดํ„ฐ์˜ ์ƒ์„ฑ์‹œ๊ฐ„, ์ˆ˜์ •์‹œ๊ฐ„, ํ˜น์€ ์ƒ์„ฑํ•œ ์‚ฌ๋žŒ ๋“ฑ์„ ์ €์žฅํ•ด์•ผํ•  ๋•Œ
  • ๋งค๋ฒˆ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ์— ์ปฌ๋Ÿผ์œผ๋กœ ์ง€์ •ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ๋ฒˆ๊ฑฐ๋กœ์›€

BaseTimeEntity

package com.sejongmate.common.domain;

import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModifiedDate;
}
  • @MappedSuperclass : Jpa ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๊ฐ€ BaseTimeEntity๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง„ ํ•„๋“œ๋„ ์—ด๋กœ ์ธ์‹๋˜๋„๋ก ํ•จ
  • @EntityListeners(AuditingEntityListener.class) : Auditing ๊ธฐ๋Šฅ ์ œ๊ณต
  • @CreatedDate : ์ƒ์„ฑ ์‹œ๊ฐ„ ์ž๋™ ์ €์žฅ
  • @LastModifiedDate : ๋ณ€๊ฒฝ ์‹œ๊ฐ„ ์ž๋™ ์ €์žฅ
  • ์›ํ•˜๋Š” Entity ํด๋ž˜์Šค์— ์œ„์˜ ํด๋ž˜์Šค ์ƒ์†ํ•œ ํ›„, main application ํด๋ž˜์Šค์— ๋ฐ˜๋“œ์‹œ @EnableJpaAuditing ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•จ