JpaRepository의 findById()
public interface JpaRepository<T, ID> {
Optional<T> findById(ID id); // ID로 엔티티를 찾을 때 Optional 반환
}
왜 Optional을 사용하나요?
1. 존재하지 않는 ID 조회 가능성
// id=999인 게시글이 없을 때
Post post = postRepository.findById(999L).get(); // NoSuchElementException 발생
2. null 체크의 명시적 처리
// 예전 방식 (null 체크)
Post post = postRepository.findById(id);
if (post == null) {
throw new PostNotFoundException();
}
// Optional 사용 (더 안전하고 명시적)
return postRepository.findById(id)
.orElseThrow(() -> new PostNotFoundException());
3. 다양한 대체 값 처리 가능
// 값이 없을 때 다양한 처리 방법 제공
postRepository.findById(id)
.orElseThrow() // 예외 발생
.orElse(new Post()) // 새 객체 반환
.orElseGet(() -> ...) // 동적으로 대체값 생성
'Java Framework > Spring Boot' 카테고리의 다른 글
[Lombok] AccessLevel (0) | 2025.04.09 |
---|---|
[Spring Boot] Generic (0) | 2025.03.10 |
[Spring Boot] Thymeleaf 템플릿 상속 (Template Inheritance) (0) | 2025.02.06 |
[Spring Boot] PRG 패턴 (0) | 2024.12.20 |
[Spring Boot] DTO(Data Transfer Object) (0) | 2024.12.17 |