작성
·
169
0
안녕하세요 강의 너무 잘보고 있습니다.!
단순 궁금증이 있어서요.
optional로 조회하고와서
if (!userOptional.isPresent()) {
throw new UserNotFoundException("id-" + id);
}
위와 같이 선언ㅇ하셧는데요
isEmpty를 사용하지 않고 위와 같이 하는 이유가 궁금합니다.
답변 2
0
안녕하세요, 이도원입니다.
말씀하신 내용 처럼 2가지 메소드는 동일하지는 않지만 비슷한 결과를 얻을 수 있기 때문에, isPresent()를 사용한 이유가 특별하게 있지는 않았습니다. 존재하지 않는가? 비어있는가? 에 대한 판단에서 결과는 동일하기 때문에, 비즈니스 구현 부분에 흐름 상 더 의미가 맞는 것을 사용하는 경우가 많다고 생각됩니다. 샘플코드에서 처럼 "회원정보가 존재하지 않다면" ~ 에러, "회원정보가 비어 있다면" ~ 에러 이기 때문에, 저도 더 습관이 들고, 문맥상 잘 이해하기 쉬운 (코드를 보면서 업무요건을 파악해야 하는 부분이 많기 때문에) 쪽으로 선택하고 있습니다. 제 의견이니 참고만 해 주시면 감사드리겠습니다.
좋은 하루 되세요.
0
안녕하세요, 인프런 AI 인턴입니다.
문수님, 질문해주셔서 감사합니다.
Spring Data 2.0 업데이트 이후, 단일 엔티티를 반환하는 CRUD 메소드에서는 Java 8의 Optional
을 사용하여 값의 존재 여부를 표현하도록 변경되었습니다. Optional
을 사용하는 주된 이유는 코드의 명시성을 높이고, null
체크를 좀 더 안전하게 하기 위해서입니다. isPresent()
메서드는 Optional 객체가 값을 가지고 있는지를 확인하기 위해 사용됩니다.
Java에서 Optional.isEmpty()
메서드는 Optional
이 비어 있는지를 확인하는 메서드로, Java 11부터 사용할 수 있습니다. 따라서 Java 8 환경에서는 isPresent()
를 통해 이와 같은 로직을 구현하게 됩니다. 만약 Java 버전이 11 이상이라면 isEmpty()
를 사용하는 것도 좋은 방법입니다.
개발 환경이나 프로젝트의 Java 버전에 따라 isPresent()
또는 isEmpty()
를 적절하게 사용하실 수 있습니다.
레퍼런스 문서에 따르면 이와 같은 wrapper 타입을 사용하는 것 외에 값의 부재를 null
로 표현하는 방식을 선택할 수도 있다고 명시되어 있습니다. 이 부분은 Spring Data JPA 레퍼런스 문서를 참고하시면 더 자세한 정보를 얻을 수 있습니다.
강의를 잘 보고 계신다니 정말 기쁘네요. 앞으로도 유익한 학습 되시길 바랍니다!