TIL

20221229 TIL optional한 dto의 값을 어떻게 하면 좋을까?

jiwoosmile 2022. 12. 29. 17:57

 

아직은 디자인을 입히지 않은 질문 작성 폼...!

포트폴리오 작업을 하면서 필수값이 아닌 입력값을 어떻게 다루면 좋을지 고민이 되었다.

예를 들어 위 form에서 포인트를 입력하지 않아도 질문을 올릴 수 있다.

이 때 null 값이 들어오게 되는데, 이를 어떻게 백엔드에서 처리를 하면 좋을지 고민이 되었다.

 

https://www.baeldung.com/jackson-optional

DTO의 필드를 Optional로 쓰면 어떨까 했지만 위와 같이 안된다는 글을 찾을 수 있었고,

 

많은 검색 이후로 이에 대해 아래와 같은 답을 찾을 수 있었다.

// QuestionController.java

Optional<Long> pointsOptional = Optional.ofNullable(questionRequestDto.getPoints());
Points points = pointsOptional.isPresent()
        ? new Points(questionRequestDto.getPoints())
        : new Points(0L);

컨트롤러에서 위와 같이 Optional로 값을 받아주고, 

삼항 연산자를 사용해서 값이 있다면 받아온 값을 사용하고,

없을 때는 없을 때에 해당하는 값을 넣어주는 방식을 사용하면 된다.

 

위 방식을 이용하면 null일 수 있는 값을 언제든 다룰 수 있게 된다.

 

어떻게 하면 좋을지 모르는 문제를 만났을 때 어떻게 해결할 수 있을지 고민을 해보고,

만약 그 방법이 통하지 않는다면 다른 해결법을 찾아보도록 하자!