🧷 @EntityListeners

정의

@EntityListenersJPA 엔티티의 생명주기 이벤트에 반응하는 콜백 클래스를 연결하는 애너테이션이다. 엔티티가 저장, 수정, 삭제될 때 특정 메서드를 실행할 수 있다.

엔티티에 직접 로직을 넣지 않고 생명주기별 처리 로직을 분리할 때 유용하다.

🧩 역할

  • 엔티티 생명주기 이벤트를 감지한다
  • 저장, 수정, 삭제 시점에 별도 로직을 실행한다
  • 감사 로그, 초기값 세팅, 변경 추적에 활용할 수 있다
  • 엔티티와 부가 로직을 분리해 가독성을 높인다

🛠 사용법

엔티티에 리스너 연결

import javax.persistence.*;

@Entity
@EntityListeners(AuditListener.class)
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
}

리스너 클래스 구현

import javax.persistence.*;

public class AuditListener {

    @PrePersist
    public void beforeSave(Object obj) {
        System.out.println("객체가 저장되기 전: " + obj);
    }

    @PostPersist
    public void afterSave(Object obj) {
        System.out.println("객체가 저장된 후: " + obj);
    }
}

주요 콜백 메서드

Callback 호출 시점
@PrePersist 영속화 직전
@PostPersist 영속화 직후
@PostLoad 조회 후
@PreUpdate 수정 직전
@PostUpdate 수정 직후
@PreRemove 삭제 직전
@PostRemove 삭제 직후

⚠️ 주의사항

  • 콜백 로직은 짧고 명확하게 유지하는 것이 좋다.
  • 리스너에서 다른 엔티티를 무리하게 조작하면 예기치 않은 부작용이 생길 수 있다.
  • 감사 기능을 쓸 때는 @EnableJpaAuditing과 함께 구성하는 경우가 많다.
  • 엔티티 내부 로직과 리스너 로직이 섞이지 않도록 역할을 분리하는 것이 좋다.

📌 정리

  • @EntityListeners는 엔티티 생명주기 이벤트에 반응하는 콜백 연결 애너테이션이다.
  • 저장, 수정, 삭제 시점의 부가 로직을 분리해서 관리할 때 유용하다.
  • 감사 기능이나 변경 추적 기능과 함께 자주 사용된다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기