본문 바로가기
IT/Java

Optional<List<Entity>> 잘못된 표기법

by 성준하이 2023. 6. 30.
반응형

제목에 있는 그대로 내용을 다뤄볼것이다.

 

시작하기 앞서 Optional 에 대해서는 아래 참고 포스팅을 참고 바란다.

 

Optional은 안에 값이 null인지 아닌지를 판별해주는 자바 8부터 지원되는 기능이다.

 

JPA를 사용하면서 findBy 와 같은 쿼리메서드를 사용하면서 인자값을 optional로 받곤 하는데 

list를 받을때 optional 을 사용하는 잘못된 코드를 발견하여 이렇게 포스팅으로 남겨둔다.

 

올바른 표기법은 둘중 하나이다.

- Optional<Entity> test

- List<Entity> test

 

Optional<Entity> test

위에껀 먼저 Entity 라는 항목이 null이거나 있거나이다.

이 기능은 findby 쿼리 메서드를 사용할 경우엔 Primary 한 값에 설정을 주로 해주며 1개만 있는 값을 받을때 사용한다.

하지만 그 값이 없을 경우엔 null로 반환을 하고 

에러를 피하려면 아래 참고포스팅을 활용하여 orElse 를 사용하면 된다.

 

List<Entity> test

아래 List는 결국 배열이냐 아니냐의 문제이다.

고로 Optional<List<Entity>> 를 사용하게 되는건 옳지 않다.

이유는 List는 비어있는 배열도 배열이지 null이 아니기 때문이다.

 

Optional 에 대한 이해도가 더 필요하고 기능은 잘 쓰면 더욱 좋은 코드가 될것이다.

 


참고 포스팅

https://thenicesj.tistory.com/306

 

Optional 이란?

지난 포스팅에서 dto 변수의 null 에 대한 포스팅을 다뤄본적이 있다. 관련 내용은 아래 참고 포스팅에 존재한다. 하지만 변수가 null이 아니라 dto 자체가 예를들어 쿼리의 결과가 없어서 dto 자체가

thenicesj.tistory.com

https://thenicesj.tistory.com/597

 

Optional – orElse() 와 orElseGet()

이전 포스팅에서 Optional 에 대한 내용을 다룬적이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. Optional 은 결국엔 NPE 를 해결하기 위해서 생겨났고, 만약 Null일 경우엔 default 값을 넣어줄수

thenicesj.tistory.com

 

반응형

댓글