inblog logo
|
LifeLog, DevLog
    JPA

    JPA Auditing

    KYJTHEYJ's avatar
    KYJTHEYJ
    Dec 28, 2025
    JPA Auditing
    Contents
    JPA Auditing

    JPA Auditing

    엔티티의 생성 및 수정 시간을 자동으로 관리해주는 기능

    @CreatedDate, @LastModifiedDate

    • 먼저 Auditing을 활성화 해야한다

      • 메인 클래스에 @EnabledJpaAuditing 을 활성화

    • 엔티티 리스너 연결, @CreatedDate, @LastModifiedDate 사용

      import jakarta.persistence.*;
      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 abstract class BaseEntity {
      
          @CreatedDate
          @Column(nullable = false, updatable = false)
          private LocalDateTime createdAt;
      
          @LastModifiedDate
          private LocalDateTime modifiedAt;
      }
      • 보통 이런 식으로 베이스가 되는 엔티티에 연결 시켜놓고
        이 베이스 엔티티를 상속 받아 사용하는 방식을 주로 사용한다

      • @MappedSuperClass
        → 이 자체는 엔티티가 아니지만 엔티티가 상속해서 사용함을 명시한 어노테이션

    • 이제 상속하여 사용하기

      @Getter
      @Entity
      @Table(name = "users")
      @NoArgsConstructor(access = AccessLevel.PROTECTED)
      public class User extends BaseEntity {
      
          @Id
          @GeneratedValue(strategy = GenerationType.IDENTITY)
          private Long id;
          @Column(length = 50, nullable = false)
          private String name;
          @Column(unique = true, nullable = false)
          private String email;
          private String address;
      
          public User(String name, String email, String address) {
              this.name = name;
              this.email = email;
              this.address = address;
          }
      
          public void update(String name, String email, String address) {
              this.name = name;
              this.email = email;
              this.address = address;
          }
      }
    • 후엔 각 DTO에 LocalDateTime 타입의 필드를 넣어 사용한다

    Share article
    Contents
    JPA Auditing

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog