이 포스팅의 코드 및 정보들은 강의를 들으며 정리한 내용을 토대로 작성한 것이 일부 존재합니다.
@GetMapping("/events/{eventId}/enrollments/{enrollmentId}/accept")
public String acceptEnrollment(..., @PathVariable Long eventId,
@PathVariable Long enrollmentId) {
Study study = studyService.getStudyToUpdate(account, path);
Event event = eventRepository.findById(eventId).orElseThrow();
Enrollment enrollment = enrollmentRepository.findById(enrollmentId).orElseThrow();
eventService.acceptEnrollment(event, enrollment);
return "...";
}
위 코드처럼 DB에 뻔하게 정의되어 있는 ID 값으로 데이터를 가져오는 경우에는 Spring Data JPA에서 제공하는 Entity Converter를 이용해서 코드를 줄일 수 있다.
@PathVariable Long eventId
, @PathVariable Long enrollmentId
에서
@PathVariable("eventId") Event event
, @PathVariable("enrollmentId") Enrollment enrollment
로 바꾸면 eventId에 해당하는 event와 enrollmentId에 해당하는 enrollment를 바로 바인딩 받을 수 있다.
@GetMapping("/events/{eventId}/enrollments/{enrollmentId}/accept")
public String acceptEnrollment(..., @PathVariable("eventId") Event event,
@PathVariable("enrollmentId") Enrollment enrollment) {
Study study = studyService.getStudyToUpdate(account, path);
eventService.acceptEnrollment(event, enrollment);
return "...";
}
4줄이었던 메서드 바디부분이 2줄로 리팩토링 된 것을 확인할 수 있다.