2023. 1. 28. 20:16ใBackend/๐ฟ Spring
@NotNull, @NotEmpty, @NotBlank ์ธ ์ด๋ ธํ ์ด์ ์ DTO ํ๋์ ์ ํจ์ฑ ๊ฒ์ฆ์ ์ฌ์ฉ๋๋ค.
@NotNull
@NotNull
์ ํ๋์ Null ๊ฐ์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ์ ์ถํ ์ ์๋ค.
์ค์ ๋ก๋ @NotNull
์ด ๋ถ์ ํ๋๋ null ๊ฐ๋ง ํ์ฉํ์ง ์์ ๋ฟ, "" ๋ " " ๊ฐ์ ๋น๊ฐ, ๊ณต๋ฐฑ๊ฐ์ ํ ๋น ๋ฐ์ ์ ์๋ค.
ํ์ง๋ง @NotEmpty
์ @NotBlank
๋ ์ ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋งค๋ฒ ํท๊ฐ๋ฆฐ๋ค.
๋์ ์ฐจ์ด๊ฐ ํท๊ฐ๋ฆผ -> ๊ตฌ๊ธ๋ง -> ์ค์ผ์ด ํ์ธ -> (๋ฉฐ์น ํ) ๋์ ์ฐจ์ด๊ฐ ํท๊ฐ๋ฆผ -> ๊ตฌ๊ธ๋ง -> ...
์ด์ ๊ทธ๋ง ํท๊ฐ๋ฆฌ๊ธฐ๋ก ํ์.
@NotEmpty
Not Empty : (ํ๋๊ฐ) ๋น์ด์์ง ์๋ค <-> ๊ทธ๋ ๋ค๋ฉด ๋น์ด์๋ ํ๋๋ ์ด๋ค ์ํ์ผ๊น. ๋ฐ๋ก null ๊ณผ "" ์ด๋ค.
์ฆ @NotEmpty๋
ํ๋์ null ๊ณผ "" ๊ฐ์ ๊ฐ์ด ํ ๋น๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
@Getter
public class SampleDto {
@NotEmpty
private String phone;
}
์ด์ phone ํ๋์ null ํน์ "" ๋ฅผ ์ ๋ ฅํ API ๋ฅผ ๋ณด๋ด๋ฉด ์๋์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์๋ค.
์ ํจ์ฑ ๊ฒ์ฆ์ด ์ ์ด๋ค์ก๋ค๋ ์๋ฏธ.
{
"timestamp": "28-01-2023 07:50:16",
"errorCode": "BAD_REQUEST",
"errorMessage": "๊ณต๋ฐฑ์ผ ์ ์์ต๋๋ค"
}
์ ํจ์ฑ ๊ฒ์ฆ์ด ์ ์ด๋ค์ก๋ค๋ ์๋ฏธ๋ค.
ํ์ง๋ง ํด๋น ํ๋์ " ", " " ์ฒ๋ผ ๋์ด์ฐ๊ธฐ๊ฐ ์์ด๋ ์ ํจ์ฑ ๊ฒ์ฆ์ด ์ ์์ ์ผ๋ก ์ด๋ค์ง๊น?
์์ฝ์ง๋ง ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ๊ฐ์ @NotEmpty
๋ก ๊ฒ์ฆ์ด ๋ถ๊ฐ๋ฅํ๋ค.
" " ์ ๊ณต๋ฐฑ์ด๊ธด ํ์ง๋ง ๋น์ด์๋ ์ํ๊ฐ ์๋๋ค. ๋ญ๋ผ๋ ์๋ ์ํ, ๋น๋ก ๊ทธ๊ฒ์ด ๊ณต๋ฐฑ์ผ์ง๋ผ๋ ๋ง์ด๋ค.
๋๋ฌธ์ ํ๋์ " " ์ฒ๋ผ ๊ณต๋ฐฑ์ด ํ ๋น๋๋ฉด @NotEmpty
๋ก ๊ฒ์ฆํ ์ ์๋ค. ์ค์ ๋ก ์ฌ์ด๋ ํ๋ก์ ํธ์์ ์ฌ์ฉ์ ํด๋ํฐ ๋ฒํธ ํ๋๊ฐ @NotEmpty
๋ก ๋ผ ์์ด ์คํ์ด์ค๋ง ์
๋ ฅ๋ ๊ฐ์ด ์ ์ฅ๋ ์ผ์ด์ค๋ ์์๋ค...
๊ทธ๋ ๋ค๋ฉด " " ์ฒ๋ผ ์คํ์ด์ค๋ก๋ง ๊ฐ๋ํ ๊ฐ์ ์ด๋ป๊ฒ ์ ํจ์ฑ ๊ฒ์ฆ์ ํด์ผํ ๊น?
์ด์ ์ด๋ฒ ํฌ์คํ
์ ์ ํจ์ฑ ๊ฒ์ฆ ๋ํ์์ธ @NotBlank
๋ฅผ ์๊ฐํ ์ฐจ๋ก๋ค.
@NotBlank
@NotBlank
๋
- null
- ""
- " "
- " "
์ค ์ด๋๊ฒ๋ ํ์ฉํ์ง ์๋๋ค.
ํ์๊ฐ์ ํ ๋ ์ ๋ณด ๊ธฐ์ ์ด ๊ท์ฐฎ์ ์คํ์ด์ค๋ก๋ง ์ ๋ ฅ์ฐฝ์ ์ฑ์ธ ๋,
ํ๋์ ์ ํจ์ฑ ๊ฒ์ฆ์ @NotBlank
๋ก ํ๋ค๋ฉด ๋ณด๊ธฐ์ข๊ฒ ํ๊ธธ ๊ฒ์ด๋ค.
๊ฒฐ๋ก
@NotNull
: null
@NotEmpty
: null, ""
@NotBlank
: null, "", " ", " "
์ธ๊ฐ์ง Validator ์ ์ฐจ์ด์ ์ ์์๋ดค๋ค. ์์นซ ์คํดํ๋ฉด ํญ์ @NotBlank ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํ ์๋ ์์ง๋ง, ์ํฉ์ ๋ฐ๋ผ ๊ณต๋ฐฑ์ด๋ ๋น ๊ฐ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ๋ ๋ถ๋ช ์์ ๊ฒ์ด๋ค. ๊ฐ ์ํฉ์ ๋ง๋ Validator ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ๋ค.
๋
'Backend > ๐ฟ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@Transactional ์ผ์ง๋ง Dirty Checking ์ด ์๋ ์ด์ (1) | 2023.03.12 |
---|---|
[Querydsl] Pagination ์ฑ๋ฅ ๊ฐ์ part1.PageableExecutionUtils (11) | 2023.02.21 |
[Spring] @Cacheable ๋ฉ์๋ ๋ด๋ถ ํธ์ถ ๊ฐ์ ํ๊ธฐ (feat. self invocation) (4) | 2023.01.07 |
[JPA] Can not issue data manipulation statements with executeQuery(). (0) | 2022.12.08 |
[IDE] Unable to resolve table ์๋ฌ ํด๊ฒฐ (0) | 2022.12.08 |