작성
·
1.3K
2
강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)
질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요.
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!
구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.
기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다.
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요.
• 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
안녕하세요, 김영한님.
저 역시 실무에서 자바 개발자로 일하고 있고, 강의에서 많은 도움 받아오고 있는 수강생입니다. 항상 고맙게 생각하고 있습니다.
다름이 아니고, Repository interface에서 특정 entity 값을 반환하려는 메소드에서 왜 Optional로 반환을 해주는 이점이 있나요?
단순 코드 가독성이 좋아지는 부분 외에 이점이 또 어떤게 있을까요? 오히려 null로 뱉어주게 해서 if 조건으로 entity가 null임을 체크해서 예외를 던져주는 코드를 작성하는게 나은게 아닐까 싶어서요.. 왜냐하면, Optional<T> 역시 결국 기존 DataType을 Optional로 한번 Wrapping해주고, Optional<T> 인스턴스를 생성하기 때문에, 자원을 낭비하지 않나 싶어서요.
(아래는 수업 중 MemberRepository에 구현된 부분입니다.)
답변 4
10
먼저, 바쁘신데, 빠른 답변 고맙습니다!
자원비가 생각보다 미미하다는 점이 포인트네요..! 그리고, NullpointerException 이 터질 때 Error Trace를 찾기 힘들다는 점도 있겠고요.
아래는 제가 추가로 정리했던거 여기에 공유드리는 내용입니다.(다른 수강생들도 보시면 도움이 될듯합니다.)
3
안녕하세요. brwnsugr님 좋은 질문입니다.
null을 뱉어주는 부분 자체가 사실 문제가 됩니다. 수 많은 버그와 장애의 원인을 제공하는 것이지요.
(생각해보시면 NullPointerException을 진짜 많이 만나지요. 정말 ㅠㅠ...)
Optional을 사용하면 언어 차원에서 null 문제를 해결할 수 있습니다. 그리고 Optional 타입으로 한번 감싼다고 해서 자원비는 아무 미미합니다.
최근 언어들은 이미 optional의 개념을 빠르게 적용했고, 상대적으로 자바는 상당히 늦게 적용이 되었습니다.
java8 optional의 유용성은 자바 언어에서 권장하는 것이고, null을 반환하는게 얼마나 좋지 않지 그리고 java8 optional을 왜 사용해야 하는지는 java8 optional로 구글에 검색해보시면 정말 많은 이유를 찾으실 수 있을꺼에요^^
저는 자바 8 인 액션 책을 한번 읽어보시길 추천드립니다.
감사합니다.
1
0