Hibernate/JPA Soft Delete
실제 삭제는 하지 않고 삭제 됐다고 해당 row 에 표시만 하는 방식.
삭제를 표시하는 컬럼을 두고,
@SQLDelete
로 삭제대신 컬럼 update,
@Where
로 Entity 읽을 때 삭제된 것 제외하도록 처리하고,
@PreRemove
에서 entityManager.remove() 호출이후 해당 엔티티의 삭제 표시 필드를 삭제 상태로 만들어준다.(
@SQLDelete
로 삭제시에는
remove()
호출 작후의 엔티티는 삭제 안 된 상태값으로 남아있기 때문)
참조
How to implement a soft delete with Hibernate - YouTube