Optional과 @NotBlank는 무슨 차이인가요?
702
投稿した質問数 17
안녕하세요.
null 체크 하실 때 @NotBlank 라는 어노테이션을 붙여서 에러메시지가 나오도록 하셨는데 Optional 도 null 이 넘어올 시, null point exception이 발생하지 않도록 체크해주는 것으로 알고 있습니다. @NotBlank 와 어떤 차이가 있는 것인지 궁금합니다. 혹시 제가 놓치고 있는 부분이 있다면 짚어주시면 감사드려요.
回答 1
13
Optional의 경우 NPE가 발생하여 프로그램이 죽는 것을 막기 위해 객체를 감싸는 Wrapper 클래스이고, Java에서 8버전부터 자체적으로 지원하는 기능입니다. 다양한 상황에서 null이 발생할 수 있는 객체에 Optional을 사용하여 별도의 null 확인 절차 코드를 작성하지 않고 Optional의 메서드만으로 처리할 수 있어 코드가 직관적이고 가독성을 높여줍니다.
@NotBlank를 비롯한 @NotNull, @NotEmpty 와 같은 어노테이션들은 Java Bean Validation 에서 제공하는 유효성 검증 어노테이션이고, 스프링부트에서는 유효성 검증 구현체로 Hibernate Validator을 사용하고 있습니다. 이 친구들은 웹에서 입력값을 전달받아 dto에 저장할때 각 필드에 제약조건을 걸어 원하는 형식의 값만 받을 수 있도록 할때 사용합니다.
@NotBlank와 Optional 은 모두 null 값이 필드에 직접적으로 들어오지 못하게 한다는 점에서 공통점이 있는 반면,
Optional 객체의 경우 DB에서 값을 가져오는 것처럼 null이 생길 가능성이 있는 필드에 사용하여 NPE를 발생시키지 않으며 null인 경우 별도의 처리를 하는데에 사용되고 @NotBlank의 경우 웹환경에서 client의 입력에 대해 null 값이 들어오는지 미리 확인하고 null이라면 에러를 발생시켜 null이 들어오는것을 방지하는데에 주로 사용되게 됩니다. 주 사용처가 다릅니다.
4
Optional 은 서버 쪽에서 null을 처리하기 위해 사용하는 것이고, @NotBlank 는 클라이언트 쪽에서 null이 못 들어오게 막는 거라는 소린 거군요! 상세한 설명 감사드립니다!
Deprecated 관련 사항들
0
100
2
깃헙 collaboator 초대 관련
0
88
1
강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다
0
157
2
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
0
231
1
다중 데이터를 삭제 할 때
0
270
2
querydsl Q class 이슈
0
414
2
Windows WSL Vue 설정
2
246
1
Dip, @transactional
0
188
1
[vite] http proxy error: /auth/login
0
1043
2
로그인 하고 나서 GET요청으로 메인페이지 요청
0
234
2
GitHub Collaborator 초대 관련
0
256
2
Window에서 Vue.js 설정
0
321
2
collaboator로 초대받을 수 있을까요??
0
283
2
SecurityMockContext 로부터 유저 정보를 가져오기
0
261
1
섹션9 프론트의 코드를 보고싶습니다,,,
0
423
1
Spring Security - defaultSuccessUrl 질문
0
625
1
강의 화면이 나오지 않습니다. 음성과 자막만 나와요
0
302
1
JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ
0
690
2
ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상
0
1179
2
섹션10 언제 나오나요?
0
484
1
CommentService에서 Repository를 호출하지 않는데도
0
342
1
Editor....를 활용한 패턴에 질문있습니다.
0
494
1
섹션9 vue
0
453
2
Post에 edit 메서드 삼항연산자 질문
0
474
2

