본문 바로가기
개발 일기/spring

JPA - Auditing

by URMOO 2022. 8. 10.
반응형

엔티티 변경 시점에 언제, 누가 변경했는지에 대한 정보를 기록하는 기능

  1. Auditing 정보를 담은 추상 클래스 생성어노테이션설명
@MappedSuperclass 
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

    @CreatedDate
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModitiedDate;

}

 

@MappedSuperclass 엔티티 클래스들이 해당 어노테이션이 달린 클래스를 상속할 경우 CreatedDate 등의 어노테이션을 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class) 해당 클래스에 Auditing 기능을 포함
@CreatedDate 엔티티가 생성되어 DB에저장될 때 시간 자동저장
@LastModifiedDate 엔티티가 수정될 시 시간 자동 저장
@CreatedBy 엔티티를 생성한 user 저장
@LastModifiedBy 엔티티를 수정한 user 저장

2. 원하는 엔티티에 Auditing 클래스 상속 및 Application main에 @EnableJpaAuditing 설정

@Entity
@Table(name = "user")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User extends BaseTimeEntity {
    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    long id;

    //...생략
}
@EnableJpaAuditing
@SpringBootApplication
public class PlatformApplication {

    public static void main(String[] args) {
        SpringApplication.run(PlatformApplication.class, args);
    }

}

3.DB에 저장 시 createdDate와 lastModitiedDate가 같이 저장된 것을 볼 수 있다.

반응형

댓글