해결된 질문
작성
·
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을 써야하는 것 보다는 이게 더 자연스러운 형태라고 생각합니다!
답변이 되었길 바라겠습니다! 감사합니다!