Java 8부터 도입된 Optional은 값이 없는 경우를 표현하기 위한 클래스이다.
Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있다.
Optional 객체는 값이 존재할 수도 있고, 없을 수도 있다.
이는 NullPointerException 예외를 방지할 수 있고, 코드의 안정성을 높이며 가독성을 향상시킨다.
Optional 객체를 생성하려면, of(), ofNullable(), empty() 등의 정적 팩토리 메서드를 사용할 수 있다.
Optional 객체에 접근하기 위해서는 get() 메서드를 사용한다.
하지만 이 방법은 값이 없는 경우에 예외가 발생할 수 있으므로, isPresent() 메서드를 사용하여
값이 존재하는지 여부를 먼저 확인하는 것이 좋다.
또한, Optional 객체에 값이 있을 경우에는
orElse()나 orElseGet() 메서드를 사용하여 대체 값을 제공할 수 있다.
Optional 객체는 다른 메서드들과 연결하여 사용할 수 있다.
예를 들어, map() 메서드를 사용하여 Optional 객체의 값을 변환하거나,
filter() 메서드를 사용하여 Optional 객체의 값을 검사할 수 있다.
public Product getProductById(Long idx){
Optional<Product> result = productRepository.findById(idx);
if(result.isPresent()){
Product product = result.get();
return product;
}
return null;
}
public StudentDto.Response findByName(String name){
Optional<Student student = studentRepository.findByName(name).orElseThrow();
return StudentDto.Response.from(student);
}