Optional에 대해 공부해보았다.
Spring으로 프로젝트를 하던 도중 findById() 메서드를 객체로 받지 못해서 마우스로 올려보니 Optional 타입으로 나와서 변수 자체를 Optional로 받던가 .orElseThrow로 예외처리를 하지 않으면 에러가 떠서 정리해본다.
Optional<T> 클래스는 Integer처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스다.
Optional 객체를 활용하면 null값으로 발생하는 예외를 조건문이 없어도 간단히 처리 할 수 있다. Java8부터 등장해 NullPointerException(이하 NPE)를 방지할수 있도록 했다.
JpaRepository에서 findBy~ 메서드는 Optional 값을 리턴한다.
아래와 같은 메서드를 이용하면 null대신에 대체할 값을 지정할 수 있다.
- .orElse() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환
- .orElseGet() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다표현식의 결과값을 반환
- .orElseThrow() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생
Optional<T> 값을 <T>타입으로 받아오려면 null을 고려 안하면 .get()으로
null을 고려하면 위의 메서드를 활용해 받아올 수 있다.
isPresnt()메서드를 활용해 값이 있는지 확인할 수 있다.