[스프링] JPA 리스너
JPA(Java Persistence API)에서 엔티티 생명주기 이벤트를 감지하고 처리하기 위해 엔티티 리스너(Entity Listener)를 사용할 수 있습니다. 엔티티 리스너를 통해 엔티티가 영속화, 갱신, 삭제되는 이벤트를 캐치하여 처리할 수 있습니다.
엔티티 리스너 구현
JPA에서 엔티티 리스너를 구현하는 방법은 다음과 같습니다.
- 엔티티 리스너 클래스를 작성합니다.
@EntityListeners
어노테이션을 통해 해당 엔티티에 리스너 클래스를 등록합니다.
아래는 엔티티 리스너를 구현하는 간단한 예제 코드입니다.
@EntityListeners(AuditListener.class)
public class AuditEntity {
// 엔티티 필드 및 메서드
@PrePersist
public void onPrePersist() {
// 영속화 전 처리 로직
}
@PostPersist
public void onPostPersist() {
// 영속화 후 처리 로직
}
@PreUpdate
public void onPreUpdate() {
// 갱신 전 처리 로직
}
@PostUpdate
public void onPostUpdate() {
// 갱신 후 처리 로직
}
@PreRemove
public void onPreRemove() {
// 삭제 전 처리 로직
}
@PostRemove
public void onPostRemove() {
// 삭제 후 처리 로직
}
}
public class AuditListener {
@PrePersist
public void onPrePersist(AuditEntity entity) {
// 영속화 전 처리 로직
}
@PostPersist
public void onPostPersist(AuditEntity entity) {
// 영속화 후 처리 로직
}
@PreUpdate
public void onPreUpdate(AuditEntity entity) {
// 갱신 전 처리 로직
}
@PostUpdate
public void onPostUpdate(AuditEntity entity) {
// 갱신 후 처리 로직
}
@PreRemove
public void onPreRemove(AuditEntity entity) {
// 삭제 전 처리 로직
}
@PostRemove
public void onPostRemove(AuditEntity entity) {
// 삭제 후 처리 로직
}
}
위 코드에서 AuditEntity
엔티티에 엔티티 리스너를 등록하고, 해당 엔티티의 생명주기 이벤트에 대한 처리 로직을 AuditListener
클래스에 구현하였습니다.
리스너를 사용하여 처리
리스너를 사용하면 엔티티 생명주기 이벤트에 특정 로직을 적용할 수 있습니다. 예를 들어, 생성일, 수정일을 자동으로 업데이트하는 등의 비즈니스 로직을 구현할 수 있습니다.
엔티티 리스너를 통해 엔티티의 생명주기를 감지하고 원하는 동작을 수행할 수 있습니다. 실무에서는 엔티티 리스너를 적절히 활용하여 엔티티의 상태 변경에 대한 처리를 효과적으로 구현할 수 있습니다.