강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

비비비비빅님의 프로필 이미지
비비비비빅

작성한 질문수

제미니의 개발실무 - 커머스 백엔드 기본편

섹션 4 퀴즈

삭제 기능 구현에 대한 질문입니다.

해결된 질문

작성

·

35

1

안녕하세요. 오늘도 재미있게 잘봤습니다. 감사합니다.

// ReviewManager.kt
@Transactional
fun delete(user: User, reviewId: Long): Long {
    val found = reviewRepository.findByIdAndUserId(reviewId, user.id) ?: throw CoreException(ErrorType.NOT_FOUND_DATA)
    found.delete()
    return found.id
}

이 코드를 보면서 삭제를 구현할 때 두 가지 방식이 있겠다는 생각이 들었습니다. 첫번째는 조회 + 삭제, 두번째는 정확한 key를 넘겨주어서 한번에 삭제. 둘 가운데 어떤 방식을 선호하시는지 궁금합니다.

처음에는 두 번째 방식으로 구현을 한다면 메서드 이름과 동작이 더 일치해서 좋고 코드도 한 줄에 끝나서 더 좋은게 아닌가? 라고 생각을 했었는데 그렇다면 첫번째 방식을 하면 좋은점이 무엇일까 다시 생각을 해보니 만약 삭제할 때 ORM 예외가 발생한다면 ReviewManager가 몰라도 된다는게 장점일 수 있겠다는 생각이 들었습니다.

 

 

답변 1

1

제미니님의 프로필 이미지
제미니
지식공유자

제 경우는 JPA를 쓰는 상황이면 자연스럽게 전자의 상황의 코드를 선호합니다 😃
실제로 Hard-Delete(Delete 쿼리) 가 아니라 업데이트 문으로 처리하고 있는 형태기 때문에 한줄로 처리한다 하더라도 별도 JPQL을 써야하는 것 보다는 이게 더 자연스러운 형태라고 생각합니다!

답변이 되었길 바라겠습니다! 감사합니다!

비비비비빅님의 프로필 이미지
비비비비빅

작성한 질문수

질문하기