PIA 공지 상세조회에서 사용한 코드.
ExternalNotice notice = repository.findById(id)
.orElseThrow(() -> new ExternalNoticeNotFoundException(id));
findById()는 조회 결과가 없을 수도 있어서 Optional<ExternalNotice>를 반환한다.
즉 바로 ExternalNotice를 받는 게 아니라
값이 있을 수도 있고 없을 수도 있는 상태로 받는다.
값이 없을 수 있다는 걸 표현할 때 사용.
Optional<ExternalNotice>
조회 결과가 있으면 ExternalNotice가 들어 있고
없으면 빈 Optional이 반환된다.
값이 없으면 다른 값을 대신 반환한다.
optional.orElse(defaultValue);
기본값으로 대체해도 되는 경우에 사용하면 된다.
값이 없으면 예외를 발생시킨다.
optional.orElseThrow(...);
Biz Assist에서는 공지 상세조회에 사용했다.
상세 공지가 없는데 임의의 값을 대신 넣을 수는 없어서 orElseThrow()로 처리했다.
공지 있음
→ ExternalNotice 사용
공지 없음
→ ExternalNoticeNotFoundException
→ 404 응답
이번 코드에서 보면 Optional 자체보다
값이 없을 때 어떻게 처리할지를 호출하는 쪽에서 정하는 부분이 핵심이었다.