DTO

JJยท2024๋…„ 7์›” 22์ผ

backEnd

๋ชฉ๋ก ๋ณด๊ธฐ
11/16
post-thumbnail

๊ฐ์ฒด ๋ถ„๋ฆฌ

class User {
	private String name;
	private String id;
	private String pwd;
}

User ๊ฐ์ฒด์˜ ํ•„๋“œ๊ฐ€ ์ด๋ ‡๋‹ค๊ณ  ํ•˜์ž.
api๋ช…์„ธ์„œ

์œ„ ๋ช…์„ธ์„œ์™€ ๊ฐ™์ด request body๋กœ id์™€ pwd๊ฐ€ ๋“ค์–ด์˜ค๋ฉด service์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋งˆ์นœ ํ›„, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž์ผ ๊ฒฝ์šฐ response body๋กœ ์‚ฌ์šฉ์ž์˜ id์™€ name์„ ๋ณด๋‚ธ๋‹ค.

POST ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ User ๊ฐ์ฒด๋กœ ๋ฐ›์„ ๊ฒƒ์ธ์ง€ ๊ทธ๋ ‡๋‹ค๋ฉด ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ๋ณด๋‚ผ ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋˜๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ ํ•œ๋‹ค.

๊ฐ์ฒด๋ฅผ User ํ•˜๋‚˜๋งŒ ์“ธ ๊ฒฝ์šฐ,

  • ์Šคํ”„๋ง 3๊ณ„์ธต(C/S/R) ๊ฐ„์˜ ์ „์†ก(์ด๋™) ์‹œ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์œ„ํ—˜
  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ตณ์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ โ†’ ๋„คํŠธ์›Œํฌ ๋น„์šฉ๋งŒ ์˜ฌ๋ผ๊ฐ€๊ณ  ๋ณด์•ˆ์—๋„ ์ข‹์ง€ ์•Š๋‹ค
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ฏธํฌํ•จ ex) ๊ตฌํ˜„ ์ฝ”๋“œ ๊ฐ„ ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์—†์ง€๋งŒ, ํ™”๋ฉด์—๋Š” ๊ฐ™์ด ๋ฟŒ๋ ค์ ธ์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ
  • ๋‹จ์ผ์ฑ…์ž„ ์›์น™
    • ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ณ„์ธต์—์„œ ๊ทธ ๊ฐ์ฒด์— ์ˆ˜์ •์„ ๊ฐ€ํ•˜๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์ด ๋ฐ”๋กœ ๊นจ์ง„๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์›๋ณธ์€ ๋ณด์กดํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์‚ฌ๋ณธ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

DTO vs Entity

DTO(Data Transfer Object)

  • ๋ฐ์ดํ„ฐ โ€˜์ „์†ก์šฉโ€™ ๊ฐ์ฒด = ์—”ํ‹ฐํ‹ฐ(Entity)์˜ ์‚ฌ๋ณธ

Entity(or Domain Object)

  • ๋ฐ์ดํ„ฐ ์›๋ณธ from DB
  • DB๋กœ ๋“ค์–ด๊ฐˆ/์—ฐ์‚ฐ์ด ๋๋‚œ (= ์›๋ณธ์ด ๋ ) ๊ฐ์ฒด
  • ์—”ํ‹ฐํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—”ํ‹ฐํ‹ฐ์™€ ๋‹ค๋ฅธ ์˜๋ฏธ์ด๋‹ค

Q) ์—”ํ‹ฐํ‹ฐ๋Š” setter๋ฅผ ์ ˆ๋Œ€ ๊ฐ€์ง€๋ฉด ์•ˆ๋ ๊นŒ์š”?
A) db๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ ค๋ฉด setter๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

DTO ๋ณ€ํ™˜์€ ์–ด๋””์—์„œ?

Service?

์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ณ€ํ™˜๊ณผ ๊ฐ™์€ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒƒ์€ MVC ๊ตฌ์กฐ์— ๋งž์ง€ ์•Š๋‹ค.

Controller?

View์— ์ข…์†์ ์ธ DTO๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ Service์˜ ์—ญํ• ์ด ์•„๋‹ˆ๋ผ Controller์˜ ์—ญํ• ์ด๋‹ค. ๋งŒ์•ฝ Service์—์„œ ๋ณ€ํ™˜์„ ํ•œ๋‹ค๋ฉด Service๊ฐ€ View์— ์ข…์†์ ์ด๊ฒŒ ๋˜์–ด ์‘๋‹ต์˜ ํ˜•ํƒœ ๋ณ€๊ฒฝ ์‹œ Service๋„ ๋ณ€๊ฒฝ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค.

์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ1
์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ2

profile
๐ŸŽ€๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปโœจ๐Ÿพ๐ŸŒท๐Ÿฆ…

0๊ฐœ์˜ ๋Œ“๊ธ€