- 강의 영상: https://fastcampus.app/courses/211160/clips/779521?organizationProductId=13720
09:29 분경
코틀린 변경 때 Optional 을 nullable 처리만 해주면 된다고 설명을 한다.
근데 findAllBy ~ 이런 다수의 결과를 받는 경우 조회 조건에 해당하는 데이터가 없을 경우 null을 반환하지 않고 빈 컬렉션을 돌려준다.
따라서 해당 쿼리 메서드는 null을 응답 받을 일이 없다.
애초에 아래와 같은 코드는 있지도 않을 일에 대해 지나치게 방어적으로 짠 코드라 생각한다.
public interface TodoRepository extends JpaRepository<Todo, Long> {
Optional<List<Todo>> findAllByDoneIsFalseOrderByIdDesc();
}
디버깅을 해서 응답 데이터를 보면 빈 데이터를 담은 Optional 이 낯설다.
그냥 아래와 같이 짜면 된다.
public interface TodoRepository extends JpaRepository<Todo, Long> {
List<Todo> findAllByDoneIsFalseOrderByIdDesc();
}
이렇게 하면 그냥 빈 ArrayList 가 돌아온다.
또한 코틀린으로 전환한 코드도 List<Todo>? 는 사족이다. 그냥 아래처럼 List<Todo> 반환하면 된다.
interface TodoRepository JpaRepository<Todo, Long> {
fun findAllByDoneIsFalseOrderByIdDesc() : List<Todo>
}
강사는 코틀린으로 전환하면서 Optional로 래핑을 안하니 오버헤드를 절약할 수 있다고 했다.
하지만 이것은 자바에서 불필요하게 Optional로 반환을 받게 처리하는 것 부터가 문제였다고 본다. 코틀린은 아무 죄가 없다..