2021-06-03(Thu)
Facts (์ฌ์ค, ๊ฐ๊ด)
์ค๋๋ง์ ๋ฆ์ ์ ์ค๋ค.
์ง์ํ๋ ๊ธฐ์ ์์ ์คํผ๋ฅผ ๋ฐ์๋ค.
pepple ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ๊ณ , ๊ฒฐ์์ ๋ฉ๊พธ๋ ๋ฐฉ์์ ๋ํด ๋ ผ์ํ๋ค.
Feelings (๋๋, ์ฃผ๊ด)
ํน ์๋ ๊ฐ์ดํ๋ค.
์ฒ์์ ๋ด๋ดํ๋ค. ์คํผ ๋ฉ์ผ์ ํ๊ณ ๊ถ๊ธํ ์ ์ ์ฒดํฌํ๋ค. ํ ๋๋ ์ด๋ฐ ์ผ์ ๋ง๋๋ ๊ฐ์ ์ด ํ ์์ง์ด์ง ์๋ ๊ฒ ๊ฐ๋ค.
์ด๊ฒ ์ ๊ฒ ์ฒดํฌํ๊ณ ๋๋ ๊ทธ ๋๋ถํฐ ๊ธฐ์จ์ด ์ซ ์ฌ๋ผ์๋ค. ์ทจ์ค ์์ํ๊ณ ์ฒ์ ์ง์ํ์๋ง์ ์ํ๋ ํ์ ํฉ๋ฅํ ์ ์๋ค๋..! ์ ๋๋ ์ข์ ์ผ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฅผ ์ญ ์์ํด์คฌ๋ ์๋ด๊ฐ ๊ทผ์ฌ์ ๋ ๊ฒ์ด๋ผ๋ ์๊ฐ์ ๋์ฑ ๊ธฐ๋ปค๋ค.
๋ฌผ๋ก ๊ธฐ์๊ธฐ๋งํ ๊ฒ์ ์๋์๋ค. ์์งํ ์ฝ๊ฐ ๋๋ ค์๊ณผ ๊ธด์ฅ๋ ์ฌ๋ผ์๋ค. ๋ด ์๊ฐ๋ณด๋ค ๋์ ๋ํ ๊ธฐ๋๊ฐ ๋์ ๊ฒ ๊ฐ์๋ฐ ์ ํด๋ผ ์ ์์๊น? ํ๋ ์๊ฐ์ด ๋ค์๊ธฐ ๋๋ฌธ์ด๋ค.
์ง๊ธ์ ๋๋ ค์๊ณผ ๊ธด์ฅ์ด ๊ฐ์๊ณ ํ์ฐฝ ์ค๋ ๋ ์ํ๋ค. ์๊ฐํด๋ณด๋ฉด ๋๋ ์ปดํฌํธ ์กด์ ๊นฐ ๋๋ง๋ค ๋น์ทํ ๋๋ ค์์ ๋๊ปด์๋ค. ํ์ง๋ง ๋๋ ค์์ ๋๊ฒ ์ค์ ์ ๋ฌ๋๊ณ , ์๋ก์ด ๊ฒฝํ์ ์ด๋ค ์์ผ๋ก๋ ๋๋ฅผ ์ฑ์ฅ์์ผฐ๋ค. ์ฐ์ 3๋ฌ์ Try-out ๊ธฐ๊ฐ ๋์ ๋๋ฅผ ๋ฏฟ๊ณ ์ ๋๋ก ์ผ์ ๋ชฐ์ ํด๋ณด์.
์ฝ๋์จ ๊ณผ์ ๋ฅผ ์ ๋๋ก ์งํํ์ง ๋ชปํด์ ์์ฝ๋ค. ๊ฐ์กฑ์๊ฒ ์ถํ ๋ฐ๊ณ , ๋์ ์ฃผ์ จ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋ฅผ ํํ๊ณ , ๊ทธ๊ฐ ๋ฒ๋ ค๋์๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ค์ ๋ค์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ณด๋ ์๊ฐ์ด ํ ํ ์ง๋๊ฐ๋๋ผ. ์ถ๊ทผ ์ ์ ์ฒ๋ฆฌํ ์ผ์ ๋ค ์ฒ๋ฆฌํด๋์.
Findings (๋ฐฐ์ด ์ )
์ญ์ PR, Summary ๊ฐ์ ๊ฒ์ ์์๋ฅผ ํจ๊ป ์ ์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค๋ ๊ฒ์ ํ์ตํ๋ค. ์์
JavaDoc์ description
๊ณผ @return
์ ์ค๋ณต๋๋ ์ค๋ช
์ ์ ๋ ๊ฒฝ์ฐ์ ๊ทธ ์ด์ ๋ฅผ ์๊ฒ ๋์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์ญํ ์ด ๋ค๋ฅด๋ค. ์ค๋ณต๋๋๋ผ๋ ์ญํ ์ ์ถฉ์คํ๊ฒ ์ ๋ ๊ฒ์ด ์ฝ๋ ์ฌ๋ ์
์ฅ์์ ๋ฉ์๋๋ฅผ ํ์
ํ๊ธฐ ํธํ๋ค.
Dozer Mapper ์ฌ์ฉ๋ฒ์ ๋ํด์ ํ์ตํ๊ณ ์๋ ๋ด์ฉ๋๋ก ์ ๋ฆฌํ๋ค.
DozerMapper๋?
Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another, it is an open source mapping framework that is robust, generic, flexible, reusable, and configurable.
ํ ๊ฐ์ฒด์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ณต์ฌํ๋ ์คํ์์ค ๋งตํ ํ๋ ์์ํฌ์
๋๋ค. ํนํ layered architecture
์์ layer๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด DTO๋ฅผ ๋ง๋ค ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋งตํํ๋๋ฐ ๋์์ ์ค๋๋ค.
๋์
๊ณ๊ธฐ
Entity ๊ฐ์ฒด์ attribute ์ ๋ณด๋ฅผ DTO๋ก, ํน์ DTO attribute ์ ๋ณด๋ฅผ Entity ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ ๋, getter/setter๋ฅผ ํ์ฉํด์ ์ผ์ผ์ด ๋งตํํด์ผ ํ์ต๋๋ค. DozerMapper๋ ์ด ๋งตํ ์์ ๊ณต์๋ฅผ ์์ ๊ธฐ ์ํด ๋์ ํ์ต๋๋ค.
์ฅ์
๊ฐ์ฒด๊ฐ ๋ฐ์ดํฐ ๋งคํ์ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
reflection์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, bytecode generation์ ํ์ฉํ ๋งตํ ํ๋ ์์ํฌ์ ๋นํด ์ผ์ ํ ํผํฌ๋จผ์ค๋ฅผ ๋ ๋๋ค.
๋จ์
runtime ์์ ์ reflection์ ํตํด ๋งตํ์ ํ๊ธฐ ๋๋ฌธ์ ๋งตํํ ๊ฐ์ฒด ์ฌ์ด์ฆ๊ฐ ์ปค์ง ์๋ก ์ฑ๋ฅ ์ด์๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
custom mapping์ ์ํด์๋ XML ํ์ผ์ ๋ฐ๋ก ์์ฑํด์ผํฉ๋๋ค.
์ฐธ๊ณ
Dozer FAQ : ๊ถ๊ธํ์ ์ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์๊ฑฐ๋ ์ด ๋งํฌ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ์ ์ด๋ ํ ์ฌ๋ ๋ชซ์ ํ๋ ๊ฐ๋ฐ์๋ค.
Last updated