2022-07-27 TIL
JPA @Column(โฆ nullable=false) VS @NotNull
ํญ์ Entity ํด๋์ค ์ต์
์์ null์ด๋ฉด ์ ๋๋ ๊ฐ์ ์ง์ ํด์ค ๋, JPA @Column ์ ๋
ธํ
์ด์
์์ ์ ๊ณตํด์ฃผ๋ nullabe
๊ณผ javax.validation.constraints
์์ ์ ๊ณตํด์ฃผ๋ @NotNull
์ ๋
ธํ
์ด์
์ค ์ด๋ ๊ฑธ ์จ์ผํ๋ ๊ณ ๋ฏผ์ด์๋ค. ์ฌ๊ธฐ์ ์์์ผ ํ ๊ฑด, nullable=false
๋ DDL์ ์ฌ์ฉ๋๋ ๊ฐ์ผ๋ก Entity๋ฅผ ์ด์ฉํด ํ
์ด๋ธ์ ์ ์ํ ๋ not null
์ต์
์ ๋ถ์ฌ์ฃผ๊ธฐ๋ง ํ ๋ฟ, Entity ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ํด๋น ํ๋ ๊ฐ์ ๋ํ validation ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง๋ ์๋๋ค. (@NotNull
์ ์ฌ์ฉํด๋ Hibernate์์๋ ํ
์ด๋ธ ์์ฑํ ๋, not null
์ ์ถ๊ฐํด์ค๋ค)
์ฆ nullable=false
๋ ํด๋น ํ๋๊ฐ null
์ธ Entity๋ฅผ ์์ฑํ๋ ๋ฐ๋ ์๋ฌด๋ฐ ์ ์ฝ์ด ์์ผ๋ฉด, ํด๋น Entity๊ฐ DB์ insert๋ ๋ ์์ธ๋ฅผ ๋ง์ ์ ์์ด ์ํํ๋ค. ํ์ง๋ง @NotNull
์ ๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ฉด, DB์ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ์์ธ๊ฐ ๋ฐ์ํ๋ค. JPA์ Repository๊ฐ ์๋ชป๋ Entity๋ฅผ ์ ์ฅํ ๋, ConstraintViolationException
์ ๋ฐ์์ํจ๋ค. ์ด ๊ธฐ๋ฅ ๋๋ถ์ @Valid
๋ @Validated
์์ด๋ Entity๋ฅผ ๊ฒ์ฆํ ์ ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์ฝ๋๋จ์์ not null
์ ์ฝ์ ๊ฑธ์ด์ค ๋๋ nullable=false
๋ณด๋ค๋ @NotNull
์ ์ฌ์ฉํ๋ ๊ฑธ ๊ถ์ฅํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ