[Spring] Layered Architecture

์กฐ๋ฏผ๊ฒฝยท2025๋…„ 2์›” 11์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
1/13

โœ”๏ธ Layered Architecture

๐Ÿ“š ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ์กฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ ๊ณ„์ธต์€ ํŠน์ •ํ•œ ์ฑ…์ž„์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๊ณ„์ธต ๊ฐ„์—๋Š” ๋ช…ํ™•ํ•œ ์—ญํ•  ๋ถ„๋‹ด์ด ์ด๋ฃจ์–ด์ ธ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.


โœ๏ธ MVC ํŒจํ„ด

โŒ› ๊ธฐ์กด์˜ MVC ํŒจํ„ด์—์„œ Controller๋Š” ์—ญํ• ์ด ๋ฌด์ˆ˜ํžˆ ๋งŽ๋‹ค.

  1. ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ

  2. ์˜ˆ์™ธ์ฒ˜๋ฆฌ

  3. View Template ์‘๋‹ต or Data ์‘๋‹ต

  4. ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ

  5. DB ์ƒํ˜ธ์ž‘์šฉ


๐Ÿšจ ๋ฌธ์ œ์ 

  • Controller์—์„œ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฆ‰, ์ฑ…์ž„์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค.

  • ๊ธฐ๋Šฅ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค์–ด์ง„๋‹ค.

  • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ๋„ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.



โœ๏ธ Layered Architecture ๊ตฌ์กฐ

  • Presentation Layer

    • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ตํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    • ํ™”๋ฉด์„ ์‘๋‹ตํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•˜๋Š” API๋ฅผ ์ •์˜ํ•œ๋‹ค.

  • Business Layer(Service Layer)

    • ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    • ์š”์ฒญ์„ ํ•ด์„ํ•˜์—ฌ Repository Layer์— ์ „๋‹ฌํ•œ๋‹ค.

    • ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

  • Data Access Layer(Repository Layer)

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™๋˜์–ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • DTO(Data Transfer Object)

    • ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค.
  • Model

    • Entity

      • JPA์—์„œ๋Š” Entity๋ผ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • DAO(Data Access Object)



โœ๏ธ Layered Architecture ์ ์šฉ

1. controller

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ Service Layer์— ์ „๋‹ฌํ•œ๋‹ค.

  • Service์—์„œ ์ฒ˜๋ฆฌ ์™„๋ฃŒ๋œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ตํ•œ๋‹ค.

  • ์‚ฌ์šฉํ•˜๋Š” Annotation : @Controller, @RestController


2. Service

  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • DB์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, Repository Layer์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.

  • ์‚ฌ์šฉํ•˜๋Š” Annotation: @Service


3. Repository

  • DB์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    • Connection ์—ฐ๊ฒฐ, ํ•ด์ œ

    • CRUD ์ž‘์—… ์ฒ˜๋ฆฌ

  • ์‚ฌ์šฉํ•˜๋Š” Annotation: @Repository


4. DTO(Data Transfer Object)

  • ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

  • ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ RequestDto๋กœ ๋ช…๋ช…ํ•œ๋‹ค.

  • ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ResponseDto๋กœ ๋ช…๋ช…ํ•œ๋‹ค.

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