JPA - Auditing

mangez_js·2024년 6월 19일

Study

목록 보기
6/47

Auditing


Auditing

엔티티에 공통으로 들어가는 멤버변수들 (등록시간, 수정시간, 등록자, 수정자 등등)을 추상클 래스로 만들고,
해당 추상 클래스를 상속 받아 엔티티에 공통적인 기능을 수행하도록 하며 "엔티티의 생성과 수정을 감시"하는 기법

Auditing 필요성

  • 여러 엔티티에 공통된 멤버변수가 존재할 때 하나의 추상클래스로 통합하여 구현할 수 있음

  • 등록시간, 수정시간, 등록자, 수정자 등등의 엔티티 상태 변경에 대한 정보를 기록할 수 있음

  • 기록을 바탕으로 버그 문의, 업데이트 변경 대상 조회 등등 여러 상황에서 사용됨

    @EntityListeners

    JPA Entity에 Persist, Remove, Update, Load에 대한 "event 발생 시 전과 후에 대한
    커스텀 콜백 메서드를 수행"하도록 지원

    커스텀 콜백 수행 시점

    어노테이션설명
    @PrePersistmanager persist 의해 처음 호출될 때 실행
    @PostPersistmanager persist에 의해 실행되고 수행, SQL INSERT 이후
    @PostLoad로드 이후에 수행, SQL SELECT 이후
    @PreUpdateSQL UPDATE 이전에 수행
    @PostUpdateSQL UPDATE 이후에 수행
    @PreRemoveSQL DELETE 이전에 수행
    @PostRemoveSQL DELETE 이후에 수행

    사용법

    • Entity 클래스에 커스텀 콜백 클래스를 value 값으로 지정

      @EntityListeners(Value = {AuditingEntitylistener.class})

    AuditorAware 인터페이스

    등록자 및 수정자를 처리하는 인터페이스

    AuditorAware 인터페이스 구현

    • 현재 로그인한 사용자의 정보를 추출하여 등록자 및 수정자로 등록하는 구현 클래스

      @EnableJpaAuditing

    • Application에 Auditing 기능을 활성화하는 어노테이션

      동작 원리

    • @EntityListeners 기능을 이용해서 Entity 등록 및 수정 시에 Auditing 기능을 수행하는 원리

    • @MappedSuperclass - 해당 클래스를 상속 받는 Entity 들이 공통되는 필드를 사용할 수 있도록 부모 클래스에 지정

0개의 댓글