창업팀에서 봉착한 구현 고민!
현재 상황
임시 저장을 하는데 DB 테이블의 deleted 필드 (soft delete)를 사용하여 구현을 한 상황이었다.
private boolean deleted; 를 통해 작성 완료 여부를 나타내고 작성 완료를 누르지 않고 중간에 나가버리면 임시 저장이 가능. 소프트 삭제가 이뤄지는 방식이다.
@Getter
@NoArgsConstructor
public class PromiseCatchRequestDto {
private EventType event; //종목
private Integer recruitmentNumber; // 모집 인원
private RequirementType requirement; // 참여 조건
private LocalDateTime dateAndTime; // 약속 일시
private String title;//제목
private String content; //내용
private boolean deleted; //작성 완료 여부, 작성 완료 누르지 않고 중간에 나가버리면 소프트 삭제
private double latitude; //위도
private double longitude; //경도
private String phoneNumber; //전화번호
private LocalDateTime startTime; //운영 시작 시간
private LocalDateTime endTime; //운영 종료 시간
private String placeExplain; //장소설명
private String address; //주소
private String placeUrl; //장소 이미지
private String placeName; //장소이름
public static Promise toPromiseEntity(PromiseCatchRequestDto promiseCatchRequestDto){
return Promise.builder()
.event(promiseCatchRequestDto.event)
.recruitmentNumber(promiseCatchRequestDto.recruitmentNumber)
.requirement(promiseCatchRequestDto.requirement)
.dateAndTime(promiseCatchRequestDto.dateAndTime)
.title(promiseCatchRequestDto.getTitle())
.content(promiseCatchRequestDto.getContent())
.deleted(promiseCatchRequestDto.isDeleted())
.build();
}
public static Place toPlaceEntity(PromiseCatchRequestDto promiseCatchRequestDto){
return Place.builder()
.address(promiseCatchRequestDto.address)
구현 고민
하지만 deleted 필드 속성으로 임시저장을 구현하게 되면 소프트 삭제와 임시 저장을 구분하지 못하게 되는 문제가 발생한다.
대응 방안
그래서 내가 제시한 의견은!
1. Promise 테이블에 ACTIVE, TEMPORARY, DELETED와 같은 ENUM 상태 타입을 추가
2. 별도의 임시 저장 테이블을 create한다면 임시 저장 데이터를 삭제할 데이터와 명확히 분리 가능
다른 분의 의견은
3. 삭제 기능은 hard delete로 구별
.
'SpringBoot > 구현 고민들' 카테고리의 다른 글
[Spring] Facade Pattern 적용 계기 및 이유 (0) | 2024.08.07 |
---|---|
[Spring] AWS S3 Base64 인코딩된 이미지 처리 과정 고민 및 구현 과정 (0) | 2024.07.12 |
[Spring] AWS S3로 다중 이미지 업로드 (0) | 2024.05.26 |
[Spring] JPA Specification을 통해 다중 검색 조건에 따른 검색 API 구현(feat. 메소드 체이닝) (0) | 2024.05.19 |
[Spring] 무한 스크롤에서 Page vs Slice의 차이(feat. Slice 구현 코드) (0) | 2024.05.18 |