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