private boolean deleted = false;public void deleteBy(){
this.deleted=true;
}
이 함수를 아래처럼 호출해준다.
public void delete(Long lectureId) {
Lecture lecture = lectureRepository.findById(lectureId)
.orElseThrow(() -> new NoSuchElementException("찾는 강의가 없습니다."));
lecture.deleteBy();
lectureRepository.save(lecture);
}
그럼, 조회, 수정할 때도 삭제되지 않은 것만 보여주게 하고 싶다.
❓쿼리 method vs 쿼리 dsl
둘다 구현은 가능하지만, 어떤게 더 좋은가?
- 조건이 길어질 수록
쿼리dsl을 사용하는게 좋지만, 간단한 조건들은쿼리 method을 사용해도 좋다!현재 요구사항으로 봤을 때,
➡ 삭제되지 않은 ID만 찾는다면, "쿼리 메서드"가 더 간단하고 유지보수하기 쉬움.
➡ 조건이 많아질 경우에는 QueryDSL이 더 유연하게 확장 가능함.
그래서 쿼리method로 작성했다.
Optional<Lecture> findByIdAndDeletedFalse(Long id);
이걸 토대로
Lecture lecture = lectureRepository.findByIdAndDeletedFalse(lectureId)
.orElseThrow(() -> new NoSuchElementException("강의가 존재하지 않습니다."));
로 삭제되지 않은 강의를 보내주면 된다.
이렇게 작성해주면 삭제된 강의는 조회, 수정 등등에서 다 사용할 수 있게 된다.