DTO ํด๋์ค๋ฅผ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ผํ ์ง ๊ณ ๋ฏผ์ด ์๊ฒผ์ต๋๋ค. ์ฃผ๋ณ ๋ค์ด๋ฒ, ์นด์นด์ค ๊ฐ๋ฐ์ ์น๊ตฌ๋ค์ ์๊ฒฌ๊ณผ ์ ์ ๊ฐ์ SI/SM ๊ธฐ์ ๊ฐ๋ฐ์์ ์๊ฒฌ์ด ์ฌ๋ญ ๋ฌ๋ผ์ ์ ๋ฆฌํ๊ณ ์ ๊ธ์ ์์ฑํด๋ด ๋๋ค.
DTO ํด๋์ค๋ฅผ ๋ชฉ์ ๋ง๋ค ํ์ผ์ ์์ฑํด์ผ ํ๋ค !
๊ฒ์ํ ๊ธฐ๋ฅ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด ๊ฒ์๊ธ ๋ฑ๋ก/์์ /์ญ์ ๊ธฐ๋ฅ๊ณผ ๋๊ธ ๋ฑ๋ก/์์ /์ญ์ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ๊ตฌํ์ด ํ์ํฉ๋๋ค. ์ด๋ ๊ฒ ๊ธฐ๋ฅ๋ณ๋ก DTO ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ ๋ช ํํ ๋ชฉ์ ์ด ์์ด ๋ค๋ฅธ API์ ์์ฒญ์ด๋ ์๋ต์ ์ํฅ์ด ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง, ํด๋์ค๊ฐ ๋๋ฌด ๋ง์์ ธ์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
ํ์ฌ ์ ๊ฐ ๊ฐ์ธ์ ์ผ๋ก ํ๋ ์ฌ์ด๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฌด์ธ๊ฐ ํ์ผ์ด ๋ง์์ง๋ฉด์ ์์ด๋ณด์ด๋ ํ๋ก์ ํธ๊ฐ ๋๋ ๊ฒ์ด ๋งค๋ ฅ์ ์ด๋ผ ์๊ฐ์ด ๋ญ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ๋ฅ์ ํ์ฅํ๋ฉด์ ํ์ผ์ด ๋๋ฌด ๋ง์์ง์ ๊ฐ๋น์ด ์ ๋๊ณ ์๊ธด ํฉ๋๋ค...
์ค์ง ํ๋์ DTO ํด๋์ค๋ก๋ง !
ํ๋์ DTO ํด๋์ค ํ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฐ์๊ฐ ๋จ์ํ๊ฒ ๊ฐ๋ฐํ๊ธฐ ํธํ๋ค๋ ์ฅ์ ์ด ํฝ๋๋ค. ๋ฑ๋ก, ์์ .. ์ด๋ค ๊ธฐ๋ฅ์ด๋ ํ๋์ ๊ฐ์ฒด๊ฐ ๊ฐ์ง ํ๋๋ง ๋ชจ๋ ๋์ดํ๊ณ ๋ฐ์ดํฐ ์ ์ก ์ ํ๋์ ๊ฐ์ฒด๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํธํฉ๋๋ค. ํ์ง๋ง ํ๋์ ๊ฐ์ ๋ณด๋ผ ๋์๋ ๊ทธ ์ธ ๋ชจ๋ ํ๋๋ฅผ null๋ก ์ฑ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๋ผ ์ค๋ฅ ๋ฐ์๋ฅ ์ด ๋์ต๋๋ค.
Inner Class (๋ด๋ถ ํด๋์ค) ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
์ต๊ทผ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ฐ๊ฒฌํ ๋ฐฉ๋ฒ ์ค ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ ํ๋ ๋ฐ๊ฒฌํด์ ์๊ฐ๋๋ฆฝ๋๋ค! Inner Class๋ฅผ ํ์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค.
public class BoardDto {
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class BoardInsertDTO {
private String title;
private String title;
private String Category;
private String content;
}
@Getter
@Builder
@AllArgsConstructor
public static class BoardUpdateDTO {
private String content;
}
}
ํ๋์ ๊ฒ์๊ธ ๊ด๋ จ DTO ํด๋์ค ํ์ผ์ ์์ฑํ๊ณ ๋ด๋ถ์ ๊ธฐ๋ฅ๋ณ๋ก ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ ํธ ๋ด ํ์ผ์ด ํ๋๋ผ ๊ด๋ฆฌํ๊ธฐ๋ ํธํ๋ฉด์ ๊ธฐ๋ฅ๋ณ๋ก ํด๋์ค๋ฅผ ๋๋ ์ฌ์ฉํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ฌผ๋ก ์ด ๋ฐฉ๋ฒ๋ ๋ด๋ถ ํด๋์ค๊ฐ ๋ง์์ง๋ฉด ํ๋์ ํ์ผ์ ๋ฐฉ๋ํ ๋ด์ฉ์ด ๋ด๊ฒจ์ ธ ์์ด์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ทธ๋ผ ๋์ฒด ์ด๋ป๊ฒ ํด์ผํ์ง ?
DTO ํด๋์ค ํ์ผ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํด์ผ ํ๋์ง์ ๋ํด ๊น์ํ ๋์ ๋ต๋ณ์ด ์ ๋ช ํฉ๋๋ค.
ํญ์ ์ ์ง๋ณด์์์ ๊ฐ์ฅ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ด ๋ฐ๋ก ์ ๋งคํ ๊ฒ์ ๋๋ค. ํนํ ๊ฐ์ ํ๋์ธ๋ฐ, ์ด๋ค ๊ฒฝ์ฐ์๋ null์ด๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ฐ์ด ์๊ณ ์ด๋ ๊ฒ ๋ชจํธํ๋ฉด ์ ๋ง ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋๋ค.
์ ๋งคํ ๊ฒ์ ๋ํด ๊ธฐ์ค์ ์ธ์์ผ ํ๋ค๋ฉด ๊ทธ๊ฒ์ PM์ ์ญํ ์ด ๋ ์๋ ์๊ฒ ์ต๋๋ค. ํ๋์ ์์คํ ์ ๋ด๋นํ๋ฉฐ ๊ฐ๋ฐ/์ด์ํ๋ ์ ๋ ๋ค๋ฅธ ๋๋ฃ๋ค๊ณผ ์๊ฒฌ์ ๋๋ ๊ธฐ์ค์ ์ธ์๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ป๊ฒ ๋ณด๋ฉด ์ ๊ณต ๋จ์๋ฅผ ํฌ๊ฒ ๋ง๋ค์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ฐํํ๋ API ํ๋๋ฅผ ๋ง๋ค๋ฉด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ด๋ ๊ฒ ๋๋ฌด ๊ณตํตํํด๋ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๊ณ , ์ฑ๋ฅ ์ด์๊ฐ ์์ต๋๋ค. ๋ฐ๋๋ก ๋๋ฌด ๊ฐ๊ฐ์ ์ผ์ด์ค๋ฅผ ๋์ํ๋๋ก ๋ง๋ค์ด๋ API ์์ฒด๊ฐ ๋ง์์ ธ์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต์ต๋๋ค.
์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋๋ผ๋ ๊ฒฐ๊ตญ์ ์ฅ๋จ์ ์ด ๋ชจ๋ ์กด์ฌํ๋ค๋ ๊ฒ์ ์ดํดํ๊ณ , ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ํผํฉํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์ฌ์ด์์ ์ ์ ํ ๋จ์๋ก API๋ฅผ ์ค๊ณํ๊ณ ์ ๊ณตํ๋ ๊ฒ์ด ๋ฌ๋ฏธ์ด์ง์ ^^!
์ ๊ฐ ์ ํธํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ๊ณตํต API๋ฅผ ์ ๊ณตํ๊ณ , ์ด ๊ธฐ๋ณธ ๊ณตํต API๋ก ํด๊ฒฐ์ด ์๋๋ ํน์ํ ๊ฒฝ์ฐ์ ํํด์ ๋ณ๋์ API๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ ํธํฉ๋๋ค.
๊น์ํ๋์ ๋ฐฉ๋ฒ์ด ์ ๋ต์ ๊ฐ๊น์ง ์์๊น์ ^^? API ๊ธฐ์ค์ผ๋ก DTO ํด๋์ค ํ์ผ์ ๋๋๊ฒ ๋๋ค๋ฉด ํ๋์ API์ ๋ํ ์ ์ง๋ณด์ํ ๋ ๊ทธ ๊ธฐ๋ฅ์ ๋ํด์๋ง ์์ ํ๊ฒ ๋๋ฉด์ ๋ค๋ฅธ API ์ํฅ๋๊ฐ ์๋ค๋ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค์ ๊ฐ๋ฐ์๋ถ๋ค์ด ์ ํธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฌผ๋ก ํ์ ๋ํ ๊ทธ๋ ์ต๋๋ค.
ํ์ง๋ง ์ ๋ง์ ์งฌ๋ฝ ๊ธฐ์ค์ ์ธ์๋ณธ๋ค๋ฉด... (์ ์ธ๊ฑฐ ๊ฐ์ง๋ง)
์ด๋ค ๋๋ฉ์ธ์ ๋ํ...
- ๊ธฐ๋ฅ์ด ์ ์ํธ์ด๋ค? ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ ๋๋๊ธฐ!
- ๊ธฐ๋ฅ์ด 3๊ฐ ์ด์์ด๋ฉด์ ํ๋๊ฐ ๋ง์ ํธ์ด๋ค? ๋ด๋ถ ํด๋์ค ์ฌ์ฉํ๊ธฐ!
- ๊ธฐ๋ฅ์ด ๋ง์ํธ์ด๋ค? ํ๋์ ๋๋ฉ์ธ DTO๋ก ๊ด๋ฆฌํ๊ธฐ!
์ ๋ต์ด ์๊ธฐ ๋๋ฌธ์ ๋ํดํ์ง๋ง ์์ ๋ง์ ๊ธฐ์ค์ ์ ํ๊ณ , ๊ธฐ์ค์ ๋ฐ๋ฅด๋ฉด ๊ทธ๊ฒ ์ ๋ต ์๋๊น์?
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ด๋ค ์์คํ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํด์ผํ๊ณ ํ๋กํ ํ์ ์ ์ฐ์ ์ ์ผ๋ก ์ ๋ณด์ฌ์ผ ํ๋ ๊ฐ๋ฐ ๊ฑด์ ๋ํด์๋ ๋จ์ผ DTO ํด๋์ค ํ์ผ์ ๋๋ ํธ์ ๋๋ค. ๊ฐ๋ฐ ๋จ๊ณ์์ ์ต๋ํ ์๊ฐ์ ์ค์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ถํ ์๊ตฌ์ฌํญ์ ๋ง๋ ๊ฐ๋ฐ์ด ์ด๋์ ๋ ์๋ฃ๋๋ฉด ์ต์ ํ๋ฅผ ์ํด ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ ๋๋๊ณ ์์ต๋๋ค.