๐Ÿ“˜ Programming/Spring

DTO ํด๋ž˜์Šค๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ์ข‹์„๊นŒ?

ํ•œ์ฝ”๋”ฉ 2023. 11. 3. 11:57
728x90
728x90

 

DTO ํด๋ž˜์Šค๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ์นœ๊ตฌ๋“ค์˜ ์˜๊ฒฌ๊ณผ ์ €์™€ ๊ฐ™์€ SI/SM ๊ธฐ์—… ๊ฐœ๋ฐœ์ž์˜ ์˜๊ฒฌ์ด ์‚ฌ๋ญ‡ ๋‹ฌ๋ผ์„œ ์ •๋ฆฌํ•˜๊ณ ์ž ๊ธ€์„ ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค.


DTO ํด๋ž˜์Šค๋ฅผ ๋ชฉ์ ๋งˆ๋‹ค ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค !

๋ชฉ์ด ๊ธธ์–ด.. ์•„๋‹ˆ.. DTO ํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„ ์Šฌํ”ˆ ๊ธฐ๋ฆฐ...

 

๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๊ธฐ๋Šฅ๊ณผ ๋Œ“๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธฐ๋Šฅ๋ณ„๋กœ DTO ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ช…ํ™•ํ•œ ๋ชฉ์ ์ด ์žˆ์–ด ๋‹ค๋ฅธ API์˜ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์— ์˜ํ–ฅ์ด ์—†๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ ธ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ˜„์žฌ ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ํ–ˆ๋˜ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€ ํŒŒ์ผ์ด ๋งŽ์•„์ง€๋ฉด์„œ ์žˆ์–ด๋ณด์ด๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ๋งค๋ ฅ์ ์ด๋ผ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋ฉด์„œ ํŒŒ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง€์ž ๊ฐ๋‹น์ด ์•ˆ ๋˜๊ณ  ์žˆ๊ธด ํ•ฉ๋‹ˆ๋‹ค...


์˜ค์ง ํ•˜๋‚˜์˜ DTO ํด๋ž˜์Šค๋กœ๋งŒ !

์‹ค๋ก€๊ฐ€ ์•ˆ๋œ๋‹ค๋ฉด... 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 ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋‘๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ถ”ํ›„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๊ฐœ๋ฐœ์ด ์–ด๋Š์ •๋„ ์™„๋ฃŒ๋˜๋ฉด ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๊ธฐ๋Šฅ๋ณ„๋กœ ํŒŒ์ผ์„ ๋‚˜๋ˆ„๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•