orElseThrow 와 orElse를 설명하기에 앞서 먼저 Optional에 대해 간단하게 알아보자.
JAVA에서 Null 참조시 NullPointerException을 방지해주는 클래스를 Optional이라 한다. Optional의 목적은 자바 개발 시 NullPointerException이 너무 자주 발생해서 데이터가 null이어도 처리가 가능하도록 도와주는 것이 Optional이라고 보면된다.
User user = userRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("user doesn't exist");
String isNull;
String name;
isNull = "loose";
name = Optional.ofNullable(isNull).orElse("test");
System.out.println(name); //isNull값이 null이 아니므로 "loose" 출력
isNull = null;
name = Optional.ofNullable(isNull).orElse("test");
System.out.println(name); //isNull값이 null이므로 "test" 출력
String name1 = Optional.ofNullable("test1").orElse("test2");