20240126 (금) BackOffice 프로젝트 마무리
2024. 1. 26. 20:04ㆍTIL
마무리단계에선 우리조는 HardDelete에서 SoftDelete로 바꿔보기로 했다.
HardDelete란?
DeleteMapping 실행시에 쿼리로 delete명령어를 날려서 DB상에서 행이 하나가 완전히 사라지는 것
SoftDelete란?
DeleteMapping 실행시에 행이 완전히 사라지는 것 대신 is_deleted 같은 컬럼을 하나 추가해 true로 변경되는 식으로 데이터는 남아 있지만 조회가 되지 않도록 하는 것
일단 우리는 공통적으로 is_deleted 컬럼을 추가해줬고 기본값으로 false를 줬다.
그리고 구현하는 방법으론 2가지를 생각해냈는데,
- 직접 코드에서 Entity.isDeleted = true 를 추가해줘서 수동으로 하기
- 자동으로 Delete 매핑 이용시에 쿼리문이 update로 날라가게 수정하기
이 중에서 우리는 2번으로 하기로 정하고 튜터님에게 물어본 결과 @SQLDelete 와 @OnDelete 어노테이션을 발견했다.
@SQLDelete (대체할 명령어)
delete 쿼리를 날리는 대신에 다른 명령어를 날리도록 수정하는 어노테이션
@OnDelete
상위객체에서 딜리트매핑 수행시에 하위객체에선 어떤식으로 반응을 할지 정하는 어노테이션
결과적으론 어노테이션이 3개가 들어갔다.
@Where(clause = "is_deleted = false")
@SQLDelete(sql = "UPDATE posts SET is_deleted = true WHERE id = ?")
@OnDelete(action = OnDeleteAction.CASCADE)
여기서 Where은 is_deleted가 false 인 것들만 조회하도록 하는 것이다.
이후에는 자잘한 오류들을 수정해나가며 완성해갔다.
오늘의 한마디 : 우리조는 원래 계획대로는 필수구현을 빠르게 끝내고 남은시간에 추가구현을 하려했지만 생각보다 필수구현쪽에 시간이 많이 소모됐다. 앞으론 조금더 세세한 계획을 세울 필요가 있겠다.
'TIL' 카테고리의 다른 글
20240130 (화) 개인 주특기 플러스 주차 (1) | 2024.01.30 |
---|---|
20240129 (월) BackOffice 프로젝트 발표 및 회고 (0) | 2024.01.29 |
20240125 (목) BackOffice 프로젝트 LikeCount 구현해보기 (0) | 2024.01.25 |
20240124 (수) BackOffice 프로젝트 (0) | 2024.01.24 |
20240123 (화) BackOffice 프로젝트 기능구현 (1) | 2024.01.23 |