λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

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 μ–΄λ…Έν…Œμ΄μ…˜μ„ μΆ”κ°€ν•΄μ£Όμ–΄μ•Ό 함