2021-05-31(Mon)
Facts (์ฌ์ค, ๊ฐ๊ด)
์ฝ๋์จ 5์ฃผ์ฐจ ๊ฐ์๋ฅผ ์๊ฐํ๋ค.
์์์ผ์ ์์ ์ง์ ๊ธฐ์ ์ต์ข ๋ฉด์ ์ ์กฐ๊ธ ์ค๋นํ๋ค.
Feelings (๋๋, ์ฃผ๊ด)
๊ฒฝํ์ ๊ธฐ์ ์ ํ์ตํ ๋ '๋ถํธํจ'์ ๋จผ์ ๋๋ผ๋ ๊ฒ์ด ํจ๊ณผ์ ์ด๋ค. ๋๋ถ์ lombok๊ณผ dozer๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ตํ ์ ์์๋ค.
ํํธ ์๋ ์ฝ๋์จ ๊ฐ์๋ฅผ ์๊ฐํ๋ฉฐ ์๋ ์๋ฌธ์ด ๋ค์๋ค.
์ ํจ์ฑ ๊ฒ์ฌ๋ Entity์์๋ ํ์ง ์๊ณ DTO์์๋ง ํด์ผํ ๊น?
์ฝ๋์จ ๊ฐ์์์๋ Entity์์ ํ๋ ์ ํจ์ฑ ๊ฒ์ฌ ์กฐ๊ฑด์ ์ญ์ ํ๊ณ DTO ๊ฐ์ฒด์๋ง ์ ํจ์ฑ ๊ฒ์ฌ ์กฐ๊ฑด์ ์ฝ์ ํ๋ ๋ด์ฉ์ด ์์๋ค. ์ด์ ๋ DTO๋ฅผ ๋ง๋ค์์ผ๋ Entity ๊ฐ์ฒด๋ '์น์ด ๋ ์ด์ ์๋๋๊น'์๋ค. ์ด๋ DTO ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ธ๋ถ์์ Entity ์์ฑ์ ๊ด์ฌํ๋ ๋ถ๋ถ์ด ์ฌ๋ผ์ก์ผ๋ฏ๋ก, DTO์์๋ง ์ ํจ์ฑ ๊ฒ์ฌํ๋ฉด ๋๋ค๋ ๋ง์์ผ๋ก ์ดํดํ๋๋ฐ, ๋ญ๊ฐ ์ํ๊ฐ์ด ๋๊ปด์ก๋ค. ๊ทธ๋์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ์๊ฒฌ์ ์ฐพ์๋ดค๋ค.
๋ง์ฝ ์ ํจ์ฑ ๊ฒ์ฌ ๋์์ Entity์์ ์ ๊ฑฐํ๊ณ DTO์ ์ถ๊ฐํ๋ฉด ์๋ ์ฅ๋จ์ ์ด ์๋ค.
์ฅ์ : Entity ๊ฐ์ฒด ์์ฑ ๋ฉ์๋๋ฅผ ๋ถ๋ฅด๊ธฐ ์ ์ ์ ํจ์ฑ ์์ธ๊ฐ ๊ฒ์ถ๋๋ฏ๋ก ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ค.
๋จ์ : DTO๋ฅผ ๊ฑฐ์น์ง ์๊ณ Entity๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด, ๋ ผ๋ฆฌ์ ์ ํจํ์ง ์์ Entity๊ฐ ๋ง๋ค์ด์ง ์ ์๋ค๋ ์ํ์ด ์๋ค.
๊ทธ๋ฐ๋ฐ ์ ๋จ์ ์ Entity์๋ ์ ํจ์ฑ ๊ฒ์ฌ ์กฐ๊ฑด์ ๋ฃ์ผ๋ฉด ํด๊ฒฐ๋๋ฉฐ, ์ฌ๊ธฐ์ ๋ฐ๋ฅด๋ ๊ตฌํ ๋น์ฉ์ด ์ ๊ณ , ์ฑ๋ฅ์ ๋น์ฉ๋ ๋ง ํฌ๋ฆฌํฐ์ปฌํ๊ฒ ํฌ์ง ์์ผ๋ฏ๋ก, ์ ๋งํ ์ํฉ์์ Entity์ DTO ์ ์ชฝ์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋๊ฒ ์ข๋ค๊ณ ํ๋จํ๋ค. ์คํ์ค๋ฒํ๋ก์ฐ ์ฐธ๊ณ .
ํํธ ๋์์ฑ ์ ์ด์ ๋ํด์ ๋ฉด์ ๋ ๋ถ์กฑํจ์ ๋๊ผ๋๋ฐ, ํ์ตํ๋ฉด ํ ์๋ก ๋ฏผ๋งํจ์ ์ปค์ ธ๋ง ๊ฐ๋ค..
Findings (๋ฐฐ์ด ์ )
java bean validation ํ์ค์ ๊ฐ๋ , ์ด๋ฅผ ์ ๋ํ ์ด์ ์ผ๋ก ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ๋ค.
lombok์ผ๋ก ๊ฐ์ฒด์ Constructor, Getter, Setter ๋ฑ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ๋ค.
Object Mapper์ธ dozer ์ฌ์ฉ๋ฒ์ ํ์ตํ๋ค.
๋์์ฑ ์ ์ด์ ๋ํด์ ํ์ตํ๋ค. ์์ฉ web์์ ๋์์ฑ ์ ์ด๋ฅผ ํ๋ค๋ฉด, ์ฑ๋ฅ ์ ํ์ ๋ฐ๋๋ฝ์ ์ํ, Read-Write ๋น์จ์ ๊ณ ๋ คํ์ฌ ์ ๋งํ๋ฉด locking๋ณด๋ค๋ Timestamp Ordering์ด๋ ๋๊ด์ ๊ฒ์ฆ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค๋ ๋๋ฆ์ ๊ฒฐ๋ก ์ ์ป์๋ค. ๋ด๊ฐ ์ด์ ์ ํ๋ ๊ฒ์ ์ฌ์ดํธ ํ๋ก์ ํธ์์๋ ๊ฒ์์ ๋์ ์ ์ํ ๋ lock์ ์ฌ์ฉํ์๋๋ฐ, ์ ์ข์ง ์์ ๋ฐฉ๋ฒ์ด์๋ ์ ์ด๋ค.
lock์ ๋ํด์๋ ์ด์คํ๊ฒ ์๊ณ ์๋ ๊ฒ์ ๋๊ปด์ ์ฌํ์ตํ๋ค.
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ์ฑ์ฅํ๋ค-์คํจํ๋ ๋ถ๋ถ์ ๋ฐ๋ณตํ์ง ์๊ณ , ๋ชฐ๋๋ ๋ถ๋ถ์ ์ค๋ช ํ ์ ์๋๋ก ์ดํดํ๋ค.
Last updated