20240216 (금) 대용량 트래픽 프로젝트 - 동시성 제어 프로젝트 3일차

2024. 2. 16. 20:06TIL

오늘 한일

 

1. TicketCRUD 보완점 수정

- 1차적으로 완료하고 다른부분 개발과정때문에 아직 작성하지 못했던 부분(서비스 임플, 컨트롤러 등)들을 마저 완료해주었음

 

 

2. 각 Entity간의 관계 설정

- 다른 패키지들의 CRUD가 거의 완성됨에 따라 각자의 관계(일대다, 다대일, 양방향, 단방향) 등의 고민을 해보았고,

문제는 우리가 사용한 어노테이션 OnDelete와 소프트 딜리트를 위한 SQLDelete가 서로 맞물리지 않는다는 거였다.

OnDelete는 OneToMany에 걸어주는 cascade와 같이 한쪽 객체에서 Delete 쿼리가 날라갈때 다른쪽에도 같이 날려주는 역할이고 SQLDelete는 Delete쿼리가 날라갈때 우리가 설정해놓은 다른 쿼리로 대체되어 날라가게 해주는것이다.

@SQLDelete(sql = "Update review SET is_deleted = true WHERE id = ?") 이게 현재 우리가 설정해놓은 어노테이션

양방향을 사용하지않고 소프트딜리트와 영속성 전파를 같이 쓸수 있는 방법을 찾아보고 튜터님께도 물어보았지만 정답은 나지 않았다.

현재 cascade를 제대로 적용하려면 소프트 딜리트를 없애는것보다 양방향 매핑이 맞는것 같아서 모든 Entity가 양방향으로 설정된 상태이다.

 

3. toResponse 함수 수정

-기존 Response 클래스에 있던 toResponse의 코드구조를 살짝 변경해보았다.

companion object {
        fun from(category: Category): CategoryResponse {
            return CategoryResponse(
                id = category.id!!,
                title = category.title
            )
        }
    }
}

기존엔 Entity에 속해있던 느낌이라면 지금은 Response 클래스에 제대로 위치한 모습


그냥 코드 작성만 두고보면 오래걸릴일은 아니지만 서로 의논하고 의사결정하는데에 시간이 꽤 걸린 상황

하지만 꼭 필요했던 일이라고 본다.