Notice
반응형
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Archives
Tags
- 경주황리단길자쿠지
- 경주프렙칵테일
- 서울템플스테이데이트
- 경주프렙
- nestjs 마이크로서비스 설치 시 발생하는 의존성 충돌 해결하기
- 경주한옥자쿠지숙소
- 황리단길감성숙소
- 구글애드센스신청 #구글애드센스 #구글애드센스시작하는방법 #구글애드센스티스토리 #블로그에구글애드센스 #티스토리 #구글애드센스가입 #구글애드센스등록
- 템플스테이1월
- 함수 이름
- 경주전통주
- 경주황리단길한옥숙소
- nestjs 프로젝트 생성 명령어
- nestjs #openai #api키 #호출방법 #ai활용 #ai연동 #aikey연결하기 #환경변수파일
- 경주맛집추천
- 경주프렙후기
- 황리단길자쿠지
- 금선사데이트
- 한옥녹턴
- 금선사숙소
- 진학사 어플라이 면접 후기
- 경주3박4일여행일정
- 경주11월날씨
- 면접준비 #면접컨설팅 #면접질문 #면접모의질문 #답변구조화 #모의면접 #모의면접컨설팅 #면접컨설팅후기
- 경주동취
- 하나은행 코딩 테스트 후기
- 금선사템플스테이
- 서울템플스테이추천
- 진학사 코딩테스트 후기
- 경주술
notcherry
@NonNull vs. @NotNull vs. @Column(nullabe = false) 본문
반응형
프로젝트를 마무리하며 리팩토링을 시작했다.
객체 생성시 @NonNull을 사용했는데(첫 프로젝트에서는 이런 방식으로 했다. 왜냐면 단순히 null값을 받으면 안된다고 생각했기 때문) 프로젝트 진행하면서 validation의 @NotNull로 수정했다.(프로젝트에서 validation을 사용하기 때문)
하지만 마지막 리팩토링 기간에는 @Column(nullabe = false)으로 수정하면서 이 세 녀석에 대한 궁금증이 생겼다.
1. @NonNull
@NonNull은 주로 lombok 라이브러리에서 호출해서 많이 사용한다. 주로 NullPointException을 방지하기 위해 사용한다. 메서드의 매개변수나 객체의 필드가 null이 아니어야 호출한다. 즉, 해당 생성자를 호출할 때 null값을 전달하지 않는다.
2. @NotNull
@NotNull은 Bean Validation에서 제공하는 스펙이다. 객체나 필드의 값이 null이 아니어야 하고 주로 데이터 유효성 검사에 사용된다. null인 경우는 안되지만 비어있는 경우는 상관 없다.
3. @Column(nullabe = false)
이 어노테이션은 jpa어노테이션으로 데이터 엔터티 필드에 대한 설정을 지정해준다. 필드가 데이터 베이스 테이블의 열(column)과 매핑될 때 해당 열이 null값을 허용하지 않도록 지정한다.
정리하자면 상황의 차이, 스타일의 차이도 있는 것 같다. 유효성 검사까지 하려면 validation에서 제공하는 notnull을 사용하면 된다. null 포인터 예외를 방지하고 싶다면 notnull을 사용하면 된다.(나머지 친구들은 직접적으로 해주지 않기 때문) 데이터베이스 스키마에서 null값을 허용하지 않도록 엄격하게 정의하려면 @Column(nullabe = false)을 사용하면 된다. 우리가 마지막에 컬럼으로 수정한 이유는 entity와 직접적인 db에 null이 들어가지 않게 하기 위해서인 것 같다.
++ 프로젝트를 하면서 깨달은 건데 데이터베이스와 일관성을 유지하기 위해 entity에는 3번. 컬럼을 사용해 nullabe 안됨 처리를 해주고, dto에서 string에는 notblank를(스페이스바와 같은 공백도 감지하기 때문), long에는 notnull을 사용해준다.
반응형
'어쩌면 모두 궁금할지도?' 카테고리의 다른 글
객체 지향적으로 개발해야 하는 이유 (0) | 2023.11.02 |
---|---|
implements vs. extends (0) | 2023.10.12 |
Arrays.sort() vs. Collections.sort() (0) | 2023.07.18 |
intValue() vs. Integer.parseInt() (0) | 2023.07.12 |
.equals() 재밌는 실험 (0) | 2023.07.12 |