๋ฌธ์
DTO์ ์ํฐํฐ๋ฅผ ๋งคํํ๊ธฐ์ํด์ mapstruct๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ณ์ํด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฐ์์ผ๋ก userName๊ณผ email์ ์์ชฝ์์ ์ฐพ์์์ ์์์ ๋งคํ์ ํด์ค์ผ ๋๋๋ฐ ์ ๋ง ์ด์ํ๊ฒ๋ Member์ ๋ํดํธ ์์ฑ์๊ฐ ์๋๋ฐ๋ new Member(); ์ด๋ฐ์์ผ๋ก meber๋ฅผ ๋ฆฌํดํด์คฌ๋ค.
์ด๊ฒ์ ๊ฒ ์ ์ฉ์ ํ๋๋ผ๊ณ ํ์คํ ์ด๋ค๋ฌธ์ ์ธ์ง๋ ์ฐพ์๋ด์ง๋ชปํ์ง๋ง ๊ฐ์ฅ ์ ๋ ฅํ๊ฑด ๋กฌ๋ณต๊ณผ mapsturct์ dependencies ์์์ธ๊ฒ๊ฐ๋ค. (์ข๋ ํ์ธ์ด ํ์ํ๋ค.)
๋กฌ๋ณต์ด mapstruct ๋ณด๋ค ๋ค์ ์ ์ธ๋์ด์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์๋ ์๋ค๊ณ ํ๋๋ฐ ํ์คํ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
์ฐธ๊ณ ์ฌํญ
1. ๋ณํ๊ณผ์ ์์ ๋ณํ ์ ์ ๊ฐ์ฒด์์ ๊ฐ์ ๊บผ๋ด์์ผ ํ๋ฏ๋ก ๋ณํ ์ ๊ฐ์ฒด(source) ์๋ Getter๊ฐ ์์ด์ผ ํ๋ค.
2. ๋ณํ๊ณผ์ ์์ ๋ณํ ํ์ ๊ฐ์ฒด(target) ์๋ @Builder ๋๋ @AllArgsConstructor ๋๋ @Setter๊ฐ ์์ด์ผ ํ๋ค.
3. @AllArgsConstructor, @NoArgsConstructor์ด ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ฐ๋ผ๊ฐ๋ฏ๋ก ๋งคํ์ด ์๋๋ค. ์ด๋ด๋๋ @NoArgsConstructor(access = AccessLevel.PROTECTED)๋ก ์ ๊ทผ ์ ํ์๋ฅผ ์ธํ
ํด์ค์ผ ํ๋ค.