[Java] Optional

a45hvn·2021년 6월 16일
0

자바를 통해 토이프로젝트가 아닌 실제 업무를 하면서 정말 곤란하던 것이 있었다. 바로 null처리다. 당시 회사의 db에는 쿼리 성능을 위해서 외래키를 걸지 않고 사용하던 내용들도 있고 column에 null값이 있는 경우들이 종종 있었다. 그 결과 무엇을 db에서 검색해서 사용하려면 null처리가 엄청 잦았다.

public void sample(String token){
   UsersEntity usersEntity = userRepository.findUsersEntityByToken(token);
   
   if(usersEntity != null){
   	String someThing = usersEntity.getSomeThing();
   }
   ...
}

위와같이 시작해서 이제 null 조건이 길어지게 될 것이다.

하지만 optional을 사용하면 코드가 조금더 간결해질 수 있다.

public void sampleX(String token){
    Optional<UsersEntity> optionalUsersEntity = usersRepository.findUsersEntityByToken(token);
    boolean result = optionalUsersEntity.isPresent(); // 값이 있는지 확인
    UsersEntity usersEntity = optionalUsersEntity.get(); // 값이 있으면 가져온가.
    UsersEntity usersEntity = optionalUsersEntity.orElse(null); // 값이 있으면 가져오고 없을 경우 null값을 기본값으로 한다.ㅏ
    UsersEntity usersEntity = optionalUsersEntity.orElseThrow(Exception::New); // 값이 있으면 가져오고 없으면 error가 발생한다.
}

이것만 봐서는 크게 도움이 되나 싶지만 stream처럼 처리가 가능하기 때문에 List를 다룰때 더욱 효율적으로 사용할 수 있다.

stream으로 list를 다루는 것은 다음번에 작성하겠지만 코드가 훨씬 간결해진다.

profile
청포도루이보스민트티

0개의 댓글