๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Backend Study/๐ŸŒธSpring๐ŸŒธ

'๋‚˜'๊ฐ€ '๋‚˜'์—๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ..

by DaSsom 2023. 4. 14.

 

์Šคํ”„๋ง์˜ ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ณ

์ฒ˜์Œ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์“ธ ๋•Œ Controller? Service? Repository? Dto?? Dao?? ๋‹ค ๋ญ”์†Œ๋ฆฐ๊ฐ€ ํ–ˆ๋Š”๋ฐ ์ด ๊ทธ๋ฆผ์œผ๋กœ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ •๋ฆฌ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์ •๋ง ๋ฌด์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— " ์•„๋‹ˆ ๊ทธ๋ƒฅ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ฐ๋ฉด๋ ๊ฑธ ์™œ ? ์ด๋ ‡๊ฒŒ???  " ๋ผ๋Š” ์ƒ๊ฐ๋„ ํ–ˆ์—ˆ๋‹ค ใ…‹ใ…‹ใ…‹

 

๊ทธ๊ฒƒ์€ "๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜"๊ฐ€ ๋’ท๋ฐ›์นจํ•ด์ค„ ์ˆ˜ ์žˆ์–ด๋ณด์ธ๋‹ค.

 

  • Presentation ๊ณ„์ธต
    • ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ ์ž‘์šฉ ์ฒ˜๋ฆฌ ๊ณ„์ธต
    • CLI, HTTP ์š”์ฒญ, HTML ์ฒ˜๋ฆฌ ๋“ฑ์„ ๋‹ด๋‹นํ•œ๋‹ค.
    • HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ฐ HTML ๋ Œ๋”๋ง์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š” ์›น ๊ณ„์ธต
    • ํ”ํžˆ ๋งํ•˜๋Š” MVC (Model / View / Controller) ๋„ ์ด ๊ณ„์ธต์— ์†ํ•œ๋‹ค.
  • Domain(Business or Service) ๊ณ„์ธต
    • ์„œ๋น„์Šค/์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๋กœ์ง
    • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ๊ณ„์‚ฐ์„ ํฌํ•จํ•˜๋Š” Business ๋…ผ๋ฆฌ ๊ณ„์ธต
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๋„๋ฉ”์ธ๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…๋“ค์„ ๋‹ด๋‹นํ•œ๋‹ค.
    • ์ž…๋ ฅ/์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ
    • Presentation ๊ณ„์ธต์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ (Validation) ๊ฒ€์‚ฌ
    • ์–ด๋–ค Data Access ๋ฅผ ์„ ํƒํ• ์ง€ ๊ฒฐ์ •
  • Data Access(Persistence) ๊ณ„์ธต
    • DAO ๊ณ„์ธต
    • Database / Message Queue / ์™ธ๋ถ€ API์™€์˜ ํ†ต์‹  ๋“ฑ ์ฒ˜๋ฆฌ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ์›๊ฒฉ ์„œ๋น„์Šค์—์„œ ์˜๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต

 

๊ทธ๋Ÿผ ์ด ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ณ๊ฐ€ ๋ญ๋ƒ,

์ฝ”๋“œ๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ๋ถ€๋ถ„์ด๋‚˜ ์—ญํ• ์— ๋”ฐ๋ผ ๋…๋ฆฝ๋œ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ์„ฑํ•œ ํŒจํ„ด์ด๋‹ค. ๊ทธ ๋ชจ๋“ˆ์ด ์„œ๋กœ์˜ ์˜์กด๋„์— ๋”ฐ๋ผ ์ธต์ธตํžˆ ์—ฐ๊ฒฐ๋˜์–ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ํ™•์žฅ์ด ์‰ฝ๊ณ , ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง€๊ณ , ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜๋ฉฐ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง€๋Š” ๋“ฑ์˜ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ง€ํ–ฅ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ๋„๋ฆฌ ์“ฐ์ด๋Š” ํŒจํ„ด์ด์ง€ ์•Š๋‚˜ ํ•˜๋Š” ๋‚˜์˜ ์ž‘์€ ์ƒ๊ฐ..!

 

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด?

Controller ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ž…/์ถœ๊ตฌ

Service ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ์ ์ธ ์ผ์„ ํ•˜๋Š”(?) ๊ณณ

Repository ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐํ•˜๋Š” ๊ณณ  ์ •๋„๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ณ„์ธต๊ฐ„ ์ด๋™์„ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋Š” DTO์— ๋‹ด์•„์„œ ์ „์†กํ•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‹ด์•„์„œ ๋ณด๋‚ด๊ณ , ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์•„์„œ ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

 

 

 

 

์ด๋ ‡๊ฒŒ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ–ˆ๋‹ค๋ฉด ~ ์ด์ œ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

์„œ๋ธ”๋ฆฟ์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด๋‹ค.  ์ด ์„œ๋ธ”๋ฆฟ์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์œผ๋กœ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

** ์Šคํ”„๋ง์—์„œ๋Š” Dispatcher Servlet์ด ์„œ๋ธ”๋ฆฟ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

๊ทธ๋Ÿผ ์ด์ œ ํŠน์ง•์„ ์•Œ์•„๋ณผ๊นŒ?

์Šคํ”„๋ง ๋ถ€ํŠธ ํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ๋‚˜์˜ค๋Š” ์ด์•ผ๊ธฐ ์„ธ ๊ฐ€์ง€

IoC / DI / AOP

ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋“ค์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•ด์ฃผ๋Š”๋ฐ ์ด๊ฑธ ์ œ์–ด๊ฐ€ ์—ญ์ „๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์ œ์–ด์—ญ์ „ (IoC: Inversion of Control) ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ์ฒด์˜ ์ œ์–ด๊ถŒ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋„˜๊ฒจ์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌ์ƒํ•˜๋Š”๋ฐ๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ผ์˜ ํšจ์œจ์ด ์˜ฌ๋ผ๊ฐ€์ง€! ๊ทธ๋Ÿผ ์ด ์ œ์–ด์—ญ์ „์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š๋ƒ? ์˜์กด์„ฑ(Dependency)์„ ์ฃผ์ž…(Injection)ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ๊ทธ๊ฑธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ฑฐ๋‚˜, ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ฑฐ๋‚˜, setter ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์ž…ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (AOP: Aspect-Oriented Programming)์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š”๊ฑฐ์ง€.

 

๊ทธ๋Ÿผ ์ด ๊ด€์ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ญ”์ง€ ์•Œ์•„๋ณด์ž

AOP๋Š” ๋ถ„๋ช… OOP์™€๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค. AOP๋Š” ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌถ์–ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹ ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ฐ๊ฐ์„ ํ•˜๋‚˜์˜ '๊ด€์ (Aspect)'์œผ๋กœ ๋ณด๊ณ  ๋‚˜๋ˆˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๋ชฉ์  ๊ธฐ๋Šฅ์„ ๋œปํ•˜๊ณ  ๊ทธ ์™ธ์˜ ๊ฒƒ๋“ค์„ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ •๋„๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. 

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ๊ด€์ ๋ณ„๋กœ ๊ธฐ๋Šฅ์„ ๋ฌถ์–ด๋ณด๋ฉด ์—ฌ๋Ÿฌ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ด ๋ณด์ผ ๊ฒƒ์ด๊ณ  ๊ทธ๊ฑธ ๊ณตํ†ต ๋กœ์ง์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ฝ”๋“œ๋Š” ๋” ๊น”๋”ํ•ด์งˆ ๊ฒƒ์ด๋‹ค. 

 

 

์Œ.. ๋Œ€๋žต์ ์ธ ๊ทธ๋ฆผ์€ ๊ทธ๋ฆฐ ๊ฒƒ ๊ฐ™๋„ค๐Ÿซ 

 

 

++ ๊ทธ๋ž˜์„œ ์Šคํ”„๋ง / ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์™œ ์“ฐ๋Š”๊ฑด๋ฐ?

: ์˜ˆ์ „์— ๋ถˆํŽธํ–ˆ๋˜ ๊ฒƒ์„ ํš๊ธฐ์ ์œผ๋กœ ํŽธํ•˜๊ฒŒ ํ•ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹จ์ˆœ ๋ฐ˜๋ณต์ž‘์—… ๋ถ€๋ถ„์ด ๋งŽ์•˜๋˜ Controller ์™€ Repository ์ชฝ์„ ๊ฐœ๋ฐœ ๊ด€์ ์—์„œ ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์คฌ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋กœ์ธํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ ~

 

 

 

++ ์•„๋‹ˆ ๊ทธ๋Ÿผ ์Šคํ”„๋ง์ด๋ž‘ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ž‘ ๋ญ๊ฐ€ ๋‹ฌ๋ผ? ํ–ˆ๋˜ ์ ์ด ์žˆ์–ด ์ถ”๊ฐ€ํ•ด๋ณด๋Š” ๋‹จ๋ฝ..

์Šคํ”„๋ง์€ ๋ง๊ทธ๋Œ€๋กœ ํ”„๋ ˆ์ž„ ์›Œํฌ์ธ๋ฐ ์ด๊ฑธ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ๋ณต์žกํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ์Šคํ”„๋ง ๋ถ€ํŠธ ..!!! 

์‹ฌ์ง€์–ด๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์ด ์žฅ์  ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ์Šคํ”„๋ง์—์„œ๋Š” ๊ฐ ๋ชจ๋“ˆ์˜ ์˜์กด์„ฑ์„ ์ง์ ‘ ์„ค์ •ํ–ˆ์–ด์•ผํ•œ๋‹ค๊ณ .. 

https://spring.io/projects/spring-boot

์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒ์šฉ ์ˆ˜์ค€์˜ ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 


 

reference

์ฐธ๊ณ ๋ธ”๋กœ๊ทธ

 

[Spring Boot]Controller, Service, Repository์— ๋Œ€ํ•˜์—ฌ

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

velog.io

๋ ˆ์ด์–ด๋“œ์•„ํ‚คํ…์ณ

 

[Backend] ๋ฐฑ์—”๋“œ API ํŒจํ„ด - ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด(layered architecture)

๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ข‹์€ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ƒํ•  ๋•Œ๋Š” ํ™•์žฅ์„ฑ(extensibility), ์žฌ์‚ฌ์šฉ์„ฑ(reusability), ์œ ์ง€ ๋ณด์ˆ˜ ๊ฐ€๋Šฅ์„ฑ(maintainabiliy), ๊ฐ€๋…์„ฑ(readability)์™€ ๊ฐ™์€

kimjingo.tistory.com

์Šคํ”„๋ง๋ถ€ํŠธํ•ต์‹ฌ๊ฐ€์ด๋“œ

 

์Šคํ”„๋ง ๋ถ€ํŠธ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ - YES24

์ž…๋ฌธ์ž์˜ ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ ํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์ž…๋ฌธ์„œ!ใ€Š์Šคํ”„๋ง ๋ถ€ํŠธ ํ•ต์‹ฌ ๊ฐ€์ด๋“œใ€‹๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ๋“ค์„ ์†Œ๊ฐœํ•˜๊ณ ,

www.yes24.com

DAO, DTO, Entity

 

[DAO] DAO, DTO, Entity Class์˜ ์ฐจ์ด - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

๋ ˆ์ด์–ด๋“œ์•„ํ‚คํ…์ณ

 

 

๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜

ํ•™๊ต ๋‹ค๋‹๋•Œ ์ž ๊น JAVA ๊ด€๋ จ ์ˆ˜์—…์„ ๋“ค์€์ ์ด ์žˆ๋‹ค. ๊ทธ๋•Œ ์ˆ˜์—… ๋‚ด์šฉ์€ ๋„ท๋นˆ์ฆˆ(Netbeans) IDE๋ฅผ ํ†ตํ•ด JAVA๋กœ ์œˆ๋„์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์˜€๋‹ค. ๊ฐ„๋‹จํ•œ ์‹œ๊ฐ„ํ‘œ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๊ณผ์ œ๋Š” ์–ผ

jojoldu.tistory.com