Optinal이란?

Java 8 버전부터 도입된 Optional은 값이 없는 경우를 표현하기 위한 클래스이다.

Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있다.

 

Option 객체는 값이 존재할 수도 있고, 없을 수도 있다.

이는 NPE(NullPointerException) 예외를 방지할 수 있으며 코드의 안정성을 높이며 가독성을 향상 시킨다.


Optional 객체 생성

Optional 객체를 생성하면 of(), ofNullable(), empty() 등의 정적 팩토리 메서드를 사용할 수 있다.

  • of() 메서드 : 값이 null이 아닌 경우에만 Optional 객체를 생성
  • ofNullable() 메서드 : 값이 null인 경우에도 Optional 객체를 생성
  • empty() 메서드 : 값을 갖지 않은 빈(empty) Optional 객체를 생성

Optional 객체 접근

Optional 객체에 접근하기 위해서는 get() 메서드를 사용한다.

하지만 이 방법은 값이 없는 경우에 예외가 발생할 수 있기 때문에

isPresent() 메서드를 사용하여 값이 존재하는지 여부를 먼저 확인하는 것이 좋다.

 

예시

    public void save(BoardCategory boardCategory, BoardDTO boardDTO, Long myId) {
        //부모엔티티 조회하기
        Optional<MemberEntity> optionalMemberEntity = memberRepository.findById(myId);

        if(optionalMemberEntity.isPresent()){
            MemberEntity memberEntity = optionalMemberEntity.get();
            BoardEntity boardEntity = BoardEntity.toSaveEntity(boardCategory ,boardDTO, memberEntity);
            boardRepository.save(boardEntity);
        }
    }