Java Framework/Spring Boot

[Spring Boot] JpaRepository Optional

annovation 2025. 3. 2. 10:22

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