삭제 기능 구현에 대한 질문입니다.
안녕하세요. 오늘도 재미있게 잘봤습니다. 감사합니다.
// 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을 써야하는 것 보다는 이게 더 자연스러운 형태라고 생각합니다!
답변이 되었길 바라겠습니다! 감사합니다!
궁금한점이 여러개 생겼습니다.
1
38
1
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
55
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
77
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
85
2
프로덕트와 프로덕트카테고리 사이의 삭제 정책
1
76
2
새로 개발한다면 구현 순서
1
136
1
의존 방향에 대한 고민
1
125
2
어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?
1
98
2
OrderKeyGenerator 인스턴스화 generate() 질문
1
84
1
외부 API 통합 시 데이터 제어 범위 설계 질문
1
98
1
PG 결제 승인 로직
1
130
2
QnA에서 Join 필드 표현법
1
90
1
결제서비스 콜백 동시성문제 가능성
1
110
2
굿
1
109
1
도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법
1
137
2
도메인 객체와 엔티티 객체 사용
1
139
2
CouponService 의존성 의문
1
98
2
상품 목록 조회 고도화 질문
1
112
2
표현 계층에서의 접근 지점이 다양해지는것과 이를 해결하기 위한 파사드의 도입에 대해 제미니님의 생각이 궁금합니다.
1
123
2
제품상세 코드 느끼기
1
144
2





