본문 바로가기
백엔드/Spring

[JPA] Optional

by 작은소행성 2022. 9. 14.

Optional

Optional은 Java8 부터 도입된 클래스로 null이 아닌 값을 포함하거나 포함하지 않을 수 있는 컨테이너 객체이다. 

Spring Data JPA 사용 시 Repository에서 리턴 타입을 Optional로 받을 수 있도록 지원하고

Optional을 사용하면 반복적인 Null 체크 를 줄일 수 있기 때문에 잘 사용하면 편리하고 좋다. 

Mybatis를 쓰거나 Java8버전 이하로 개발하면 익숙하지 않을 수 있다. 

 

 

 @Override
    @Transactional
    public Sample updateSample(Long sampleId) {
    
        Optional<Sample> sample = sampleRepository.findById(sampleId);
    
        if(!sample.isPresent()) {
            throw new IllegalArgumentException();
        }
     // 위의 코드를 orElseThrow 사용을 통해 한줄로 줄일 수 있음
    
        ...
    
        return sample.get();
    }

 

//  TO-BE
    @Override
    @Transactional
    public Sample updateSample(Long sampleId) {
    
        Sample sample = sampleRepository.findById(sampleId)
                                         .orElseThrow(IllegalArgumentException::new);        .
    
        ...
    
        return sample;
    }
반응형