단건 조회기능을 만들 때 항상 null 체크 부분에서 예외를 던지는 상황을 마주친다.
moive를 조회했는데 해당 데이터가 없는 경우, 즉 null인 객체이면 무조건 예외를 던져야 할까라는 의문이 들고, 그냥 빈 객체만 반환해도 무방한게 아닌가? 라는 생각이든다.
아래 그림을 예시로 살펴보자.
조회 된 객체를 가지고 다른 애그리거트를 생성하는것이 아닌 단지 조회이므로 예외를 던져야 하는 상황은 바람직하지 않다고 생각되고 빈컬렉션을 반환하는 것이 좋다고 생각이 든다.
이펙티브 자바를 살펴보면 null이 아닌 빈 컬렉션이나 빈 배열로 반환하라 라고 나오는데 만약 애그리거트 루트를 생성하려하고 다른 서브 애그리거트가 null일 시에는 어떻게 될까?
해당 애그리거트는 null을 가지고 생성을 하게 되고, 만약 테이블의 제약 조건이 Not null인 상태이면 제약 조건에 위반이 된다.
제약조건에 위반이 되면 예외가 발생하므로 지금 케이스는 예외를 던지는 것이 맞다고 생각한다.
정리
단지 클라이언트에서 서버로 요청을 보내어 조회를 하는 경우는 빈 객체를 반환해도 좋지만 조회 후 다른 객체를 조합하여 생성해야 한다거나 제약 조건이 Not Null 인 경우는 반드시 예외 처리를 진행해야 한다라는 결론이 나온다.
필자의 생각이므로 이 글에 문제가 있을 시 피드백 부탁드립니다.