DTO vs VO
์ฐจ์ด
DTO
๋ชฉ์ : ๋ ์ด์ด ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ
๋๋ฑ๊ฒฐ์ : ์์ฑ๊ฐ์ด ๋ชจ๋ ๊ฐ์๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๋๋ค.
๊ฐ๋ณ/๋ถ๋ณ: setter ์กด์ฌ์ ๊ฐ๋ณ, ๋น์กด์ฌ ์ ๋ถ๋ณ
๋ก์ง: getter/setter ์ธ์ ๋ก์ง์ ๊ฐ์ง ์๋๋ค.
VO
์ฉ๋: ๊ฐ ํํ
๋๋ฑ๊ฒฐ์ : ์์ฑ๊ฐ์ด ๋ชจ๋ ๊ฐ์ผ๋ฉด ๊ฐ์ ๊ฐ์ฒด
๊ฐ๋ณ/๋ถ๋ณ: ๋ถ๋ณ
getter/setter์ธ์ ๋ก์ง์ ๊ฐ์ง ์ ์๋ค.
DTO(Data Transfer Object)
๊ณ์ธต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๊ฐ์ฒด
์์) Web Layer ์ Service Layer ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ DTO๋ฅผ ์ด๋ค.
ํน์ง
์ค์ง getter/setter ๋ฉ์๋๋ง์ ๊ฐ๋๋ค. ๊ทธ ์ธ ๋ค๋ฅธ ๋ก์ง์ ๊ฐ์ง ์๋๋ค.
DTO๋ ๋ถ๋ณ๊ฐ์ฒด๋ก ์ฐ์!
์๋์ฒ๋ผ getter๋ง ๋๊ณ setter๋ ์์ ๋ฉฐ ์์ฑ์์์ ์ ํ ํ๋๋ก ํ๋ฉด, ๋ฐ์ดํฐ์ ๋ณ์กฐ๊ฐ ์์์ ๋ณด์ฅํ ์ ์๋ค.
public class CrewDto {
private final String name;
private final String nickname;
public CrewDto(String name, String nickname) {
this.name = name;
this.nickname = nickname;
}
public String getName() {
return name;
}
public String getNickname() {
return nickname;
}
}
DTO Class์ Entity Class๋ฅผ ๋ถ๋ฆฌํ์.
์์ฒญ์ด๋ ์๋ต ๊ฐ์ ์ ๋ฌํ๋ ํด๋์ค๋ก ์ ๋๋ก Entity Class๋ฅผ ์ฐ๋ฉด ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋งตํ๋์ด์๋ ํต์ฌํด๋์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค. Entity ํด๋์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ด ์์ฑ๋๊ณ ์คํค๋ง๊ฐ ๋ณ๊ฒฝ๋๋ค.
๋ทฐ์ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ํด๋์ค์ ์ํฅ์ ์ฃผ์ง ์๋ DTO ํด๋์ค๋ฅผ ํ์ฉํ๋๊ฒ ์ข๋ค.
VO(Value Object)
๊ฐ ๊ทธ ์์ฒด๋ฅผ ํํํ๋ ๊ฐ์ฒด
์ค์ํ์ VO์ ์์๋ ๋์ด๋ค. ์๋ก ๋ค๋ฅธ ๋ง์์ ์ผ๋ จ๋ฒํธ๊ฐ ๋ค๋ฅด๋๋ผ๋ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๋ง์์ผ๋ก ์ทจ๊ธํ๋ค.
์ผ๋ จ๋ฒํธ๊ฐ ๊ฐ์ฒด์ฃผ์, ์ธ์คํด์ค๊ฐ ๋ง์์ด๋ผ๊ณ ์๊ฐํด๋ณด์.
ํน์ง
VO๋ ๋ถ๋ณ๊ฐ์ฒด์ฌ์ผ ํ๋ค. ๋ณ๋ setter ์ฑ๊ฒฉ์ ๋ฉ์๋๋ ํฌํจํ๋ฉด ์ ๋๊ณ , ์์ฑ์์์ ๋ชจ๋ ๊ฐ์ ์ ํ ํด๋ฒ๋ฆฐ๋ค.
๊ทธ๋๋ getter/setter ์ธ์ ๋ค๋ฅธ ๋ก์ง์ ๊ฐ์ง ์ ์๋ค.
Last updated
Was this helpful?