2021-06-01(Tue)
Facts (์ฌ์ค, ๊ฐ๊ด)
์คํ๋ง 5์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ์งํํ๋ค.
๋ด์ผ ์์ ๋ฉด์ ์ ์ค๋นํ๋ค.
Feelings (๋๋, ์ฃผ๊ด)
์คํ๋ง ์ฝ๋ & ํ ์คํธ ์์ฑ์ด ์ํ ํด์ก๋ค. fixture๋ฅผ ํด๋์ค๋ก ๋ฐ๋ก ๋นผ์ ํ์ฉํ๋ ํจํด์ด ์ข์๋ณด์ด๋๋ฐ ๋ด์ผ ๋์ ํด๋ด์ผ๊ฒ ๋ค.
CrudRespository์์ ๋์ง๋ ์์ธ ์ค javadoc์ ๋ฐ๋ก ๋ช
์๋์ง ์์ ๊ฒ์ด ์์ด์ ํผ๋์ค๋ฌ์ ๋ค. javadoc์๋ IllegalArgumentException
๋ง ๋ช
์๋์ด ์๋ ๋ฐ๋ฉด, deleteById
๊ฐ์ ๋ฉ์๋์ ์กด์ฌํ์ง ์๋ id๋ฅผ ๋๊ฒจ์ฃผ๋ฉด EmptyResultDataAccessException
์ ๋์ง๋ค.
Findings (๋ฐฐ์ด ์ )
validation์ ๋ํด์
@Valid
์๋ฐ๊ฐ ์ ๊ณตํด์ฃผ๋ ์ ๋ํ ์ด์ ์ด๋ค.
Validation ๊ทธ๋ฃน์ผ๋ก ๊ฒ์ฆ ์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค.
@validated
์คํ๋ง์ด ์ ๊ณตํ๋ ์ ๋ํ ์ด์ ์ด๋ค.
Validatoin ๊ทธ๋ฃน์ผ๋ก ๊ฒ์ฆํ ์ ์๋ค.
์ฐธ๊ณ
CrudRepository๊ฐ ๋์ง๋ ์์ธ๋ค..
..์ ๋ชจ๋ Spring์ ๋นํธ์ธ ๋์ด์๋ DataAccessException์ผ๋ก ๋ณ๊ฒฝ๋๋ค. ์ ํํ๋ @Repository
๋ผ๋ ์ ๋
ธํ
์ด์
์ด ๋ฌ๋ ค์๋ ๊ฒฝ์ฐ DataAccessException์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ 4๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
NonTransientDataAccessException
EmptyResultDataAccessException ์ฒ๋ผ ๊ฐ์ ์๋๋ฅผ ๋ฐ๋ณตํด๋ ์คํจํ ๊ฒ์ด ์๋ช ํ ์ข ๋ฅ์ ์์ธ..!
RecoverableDataAccessException
ScriptException
TransientDataAccessException
CrudRepository๊ฐ ๋์ง๋ ์์ธ๊ฐ ๋ชจ๋ ์ ๋ฆฌ๋ ๋ฌธ์๋ฅผ ์ฐพ๊ธฐ ๋ณด๋ค, ์ 4๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์กฐ์ฌํด์ ์ปค๋ฒํ๋๊ฒ ๋ง๋ค.
์ฐธ๊ณ
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ๊ทผ์ฑ์๊ฒ ํด์ผํ ๊ฒ์ ์ ๋๋ก ํด๋ด๋ ๊ฐ๋ฐ์๋ค.
Last updated