Java/Java JPA
Java JPA에서 제공하는 다양한 Listener들
너어디사니
2023. 8. 12. 06:52
안녕하세요 오늘은 JPA에서 제공하는 다양한 Listener들을 소개해보려고 합니다
Java JPA에서 제공하는 Listener들은 총 7개로 PrePersist, PreUpdate, PreRemove, PostPersist, PostUpdate, PostRemove, PostLoad 등이 제공 되며 모두 Annotation 기반으로 사용되기 때문에 변수 명 설정은 자유롭습니다
각각의 Listener 등을 설명 드리자면
@PrePersist | insert 메소드가 실행되기 전에 실행되는 Annotation |
@PreUpdate | merge 메소드가 실행되기 전에 실행되는 Annotation |
@PreRemove | Delete 메소드가 실행되기 전에 실행되는 Annotation |
@PostPersist | Persist 메소드가 실행되기 전에 실행되는 Annotation |
@PostUpdate | merge 메소드가 호출이 된 이후에 실행되는 Annotation |
@PostRemove | Delete 메소드가 호출이 된 이후에 실행되는 Annotation |
@PostLoad | SELECT 조회가 일어난 직후에 실행되는 Annotation |
Pre 가 들어간 경우에는 해당 메소드가 실행되기 전에 실행되는 Annotation으로 간단하게 정리가 되고 Post는 PostPersist를 제외하면
나머지 는 메소드가 호출이 되거나 SELECT 조회가 일어난 직후에 실행되는 Annotation임을 알 수 있습니다
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor
public class Users{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NonNull
private String name;
@NonNull
private String email;
// 이벤트
@PrePersist // insert 메소드가 실행되기 전에 실행되는 Annotation
public void prePersist(){
System.out.println("prePersist");
}
@PostPersist // Persist 메소드가 실행되기 전에 실행되는 Annotation
public void postPersist(){
System.out.println(">>> postPersist");
}
@PreUpdate // merge 메소드가 실행되기 전에 실행되는 Annotation
public void preUpdate(){
}
@PostUpdate // merge 메소드가 호출이 된 이후에 실행되는 Annotation
public void postUpdate(){
System.out.println(">>> postUpdate");
}
@PreRemove // Delete 메소드가 실행되기 전에 실행되는 Annotation
public void preRemove(){
System.out.println(">>> preRemove");
}
@PostRemove // Delete 메소드가 호출이 된 이후에 실행되는 Annotation
public void postRemove(){
System.out.println(">>> postRemove");
}
@PostLoad // SELECT 조회가 일어난 직후에 실행되는 Annotation
public void postLoad(){
System.out.println(">>> postLoad");
}
}
그래서 어떻게 나올지 궁금해서 위에 처럼 로그를 찍어보면 어느 시점에서 로그가 찍히는지 아실 수 있습니다
감사합니다