[개발 일기] 2025.05.13 - 자바 Optional 정리

2025. 5. 13. 15:51·개발 일기

💡 개요

 

오늘은 자바에서 사용되는 Optional에 대해 정리해 보자.

 

 

 

🛠️ Optional

 

Optional이란 자바에서 NullPointException을 방지하기 위해 사용되는 타입이다.

 

 

보통 JPA을 사용해 엔티티를 조회할 때 Optional로 엔티티를 한번 감싸고 사용하면, 더 안전하게 객체를 다룰 수 있다.

 

Optional<Member> findMember = memberRepository.findByEmail(email);

 

 

⚙️ Optional 제공 메서드

 

Optional에는 다양한 메서드가 제공된다.

 

 

📌 생성 관련

 

메서드 설명
Optional.of(value) 절대 null이 아닌 값을 포함한 Optional 생성 (null이면 NullPointerException)
Optional.ofNullable(value) 값이 null일 수도 있는 Optional 생성
Optional.empty() 비어있는 Optional 생성

 

 

📌 값 확인 및 처리

 

메서드 설명
isPresent() 값이 존재하면 true
isEmpty() (Java 11+) 값이 없으면 true
ifPresent(Consumer) 값이 존재하면 해당 Consumer 실행
ifPresentOrElse(Consumer, Runnable) (Java 9+) 값이 있으면 Consumer 실행, 없으면 Runnable 실행

 

 

📌 값 꺼내기

 

메서드 설명
get() 값 꺼냄 (값이 없으면 NoSuchElementException)
orElse(T other) 값이 있으면 반환, 없으면 other 반환
orElseGet(Supplier) 값이 있으면 반환, 없으면 Supplier 실행 결과 반환
orElseThrow() 값이 없으면 예외 발생 (NoSuchElementException)
orElseThrow(Supplier) 값이 없으면 Supplier에서 제공한 예외 발생

 

 

참고로 Optional.get() 은 웬만하면 사용하지 않는 것을 추천한다.

 

 

만약 사용해야 한다면 get() 직전에 Optional의 null 여부를 판별한 이후 사용하도록 하자.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성??  (0) 2025.05.15
[개발 일기] 2025.05.14 - ConfigurationProperties와 Setter  (0) 2025.05.14
[개발 일기] 2025.05.12 - 분산 저장 (파티셔닝, 샤딩)  (0) 2025.05.12
[개발 일기] 2025.05.11 - Redis 만료 원리  (0) 2025.05.11
[개발 일기] 2025.05.10 - Bulk을 사용한 저장이 하나씩 저장하는 것 보다 빠른 이유  (0) 2025.05.10
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성??
  • [개발 일기] 2025.05.14 - ConfigurationProperties와 Setter
  • [개발 일기] 2025.05.12 - 분산 저장 (파티셔닝, 샤딩)
  • [개발 일기] 2025.05.11 - Redis 만료 원리
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.05.13 - 자바 Optional 정리
상단으로

티스토리툴바