@PrePersist 선언된 것이 뭔지도 모르고
@PrePersist가 선언된 메소드를 실행 후
Repository.save(객체) 를 해버린 부끄러움을 잊지 않기위해.....ㅎㅎ
Entity Event??
https://www.baeldung.com/jpa-entity-lifecycle-events 문서에 보면 아래와 같이 적혀있다.
JPA는 다음과 같은 7개의 선택적 수명 주기 이벤트를 지정합니다.
- 새로운 엔티티에 대해 persist가 호출되기 전에 – @PrePersist
- 새로운 엔티티에 대해 persist가 호출된 후 – @PostPersist
- 엔티티가 제거되기 전 – @PreRemove
- 엔티티가 삭제된 후 – @PostRemove
- 업데이트 작업 전 – @PreUpdate
- 엔티티가 업데이트된 후 – @PostUpdate
- 엔티티가 로드된 후 – @PostLoad
위 내용이 구글 번역으로 이루어져 이해가 잘 안갈 수도 있다. 위 내용을 풀어서 작성한 블로그 글이 많고 그중에 JoJun's님이 쓰신 글을 좀 가져와봤다.
엔티티 객체의 이벤트라면 "저장", "조회", "수정", "삭제"의 이벤트를 말한다.
이벤트 콜백은 JPA에서 어노테이션으로 지원하며 어노테이션의 Target은 Method다.
- Event 실행 전
- @PrePersist : Entity Save ( Insert )가 실행되기 전
- @PreUpdate : Entity Save ( Merge )가 실행되기 전
- @PreRemove : Entity Delete가 실행되기 전
- Event 실행 이후.
- @PostPersist : Entity Save ( Insert )가 실행되고 난 후
- @PostUpdate : Entity Save ( Merge )가 실행되고 난 후
- @PostRemove : Entity Delete가 실행되고 난 후
- @PostLoad : Entity Find가 실행되고 난 후
특히 비밀번호 변경에 이용하신 개발자도 있는데 내가 보기엔 너무 신기한 사용방법이라 생각이 들었다.
'데이터베이스 > JPA' 카테고리의 다른 글
[JPA] 변경 감지와 병합(Merge) (0) | 2023.04.22 |
---|---|
[JPA]@Formula (0) | 2023.02.05 |
[JPA] JPQL @Query에 각 DB function() 사용해보기 (0) | 2022.12.31 |
[JPA] Pageable과 countQuery 사용한 Spring-Data FETCH JOIN (0) | 2022.11.24 |
[JPA] Fetch 전략과 @EntityGraph로 n+1 해결하기(2) (1) | 2022.08.04 |