etc/TIL

@SQLDelete를 통해 삭제했지만 삭제하지 않는 soft deletion을 구현하자

기억용블로그 2022. 4. 26. 19:10
728x90
@SQLDelete(sql = "UPDATE USER SET deleted=true where id=?")

soft deletion은 유저의 입장에서는 삭제되어 보이지 않는 값이지만 DB에는 삭제하지 않고 남겨두는 방식이다.

해당 Entity 테이블에 deleted라는 컬럼에 flag와 같이 true, false로 나타내어 구현한다.

 

JPA에서는 해당 어노테이션이 있으면 delete를 수행하는 대신 update를 통해 flag를 true로 하여 외부로는 보이지 않게 해주어 간단하게 구현할 수 있다.

 

@SQLDelete(sql = "UPDATE user SET deleted=true WHERE id=?")
@Where(clause = "deleted=false")

매번 deleted=false인 데이터만 가져오는 코드를 짤 수는 없으므로

@Where과 같이 사용하여 deleted=false인 데이터만 가져오게 짜는 것이 좋다