250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ปดํฌ์ง€์…˜
  • ใ…ฃใ„ท
  • MySQL
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

[๋””์ž์ธ ํŒจํ„ด] Repository Pattern
๋””์ž์ธํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] Repository Pattern

2022. 12. 6. 18:17
728x90

https://youtu.be/x6C20zhZHw8

๋ฆฌํŒฉํ† ๋ง 2ํŒ์„ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ Repository ํŒจํ„ด์ด ๋‚˜์™€์„œ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

Repository ํŒจํ„ด์ด๋ž€

๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ผ๋ฆฌ๋ฅผ ์บก์Аํ™”ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘” ํด๋ž˜์Šค ๋ชจ์Œ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด, ๋ฐ์ดํ„ฐ ์ถœ์ฒ˜(๋กœ์ปฌ DB, ์„œ๋ฒ„ API ์‘๋‹ต ๋“ฑ)์™€ ๊ด€๊ณ„ ์—†์ด ๋™์ผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋„์ž… ๋ฐฐ๊ฒฝ

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

์ด์— ๋”ฐ๋ผ ๋ช‡ ๊ฐ€์ง€ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ,

(1) ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๊ณ 

(2) ์ค‘์•™ ์ง‘์ค‘ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

Repository ํŒจํ„ด ๋„์ž… ์ „

์œ„ ์บก์ฒ˜์—์„œ ๊ณ„์ • ์„ค์ • ์ปจํŠธ๋กค๋Ÿฌ์™€ ์ œํ’ˆ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ

์ž์ฒด์ ์ธ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. (์ฝ”๋“œ ์ค‘๋ณต) 

 

Repository ํŒจํ„ด ๋„์ž… ํ›„

๋‘ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด์ œ ๊ณต์œ  ์ €์žฅ์†Œ์—์„œ ๊ณตํ†ต ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ

๊ฐœ์„ ํ•œ ์ฝ”๋“œ๋Š”, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ์ฝ”๋“œ๊ฐ€ ์ค‘์•™ ์ง‘์ค‘ํ™”๋˜๊ณ  ์ฝ”๋“œ ์ค‘๋ณต์ด ์‚ฌ๋ผ์กŒ๋‹ค.

๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ฑ…์ž„๋„ ์ด์ „ํ–ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด๊ฐ€ ์ด์ œ ์ธํ”„๋ผ ๊ณ„์ธต์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฐ•ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋•Œํ•œ ์ฑ…์ž„๋„ ์ด์ „ํ–ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์˜ˆ์ƒ ๋™์ž‘๋งŒ ์ •์˜ํ•˜๊ณ  ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • orm apis์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค์—์„œ ์„ค๊ณ„ ์„ ํƒ์„ ๊ณ ๋ คํ•  ๋•Œ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. 

 

์ด ๊ธฐ์ˆ ์˜ ํ•ต์‹ฌ์€ ์ฝ”๋“œ๊ฐ€ ๋” ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋ ์ˆ˜๋ก ๋ณ€๊ฒฝ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๊ณ  ์ „๋ฐ•์ ์œผ๋กœ ๋” ํฐ ์œ ์—ฐ์„ฑ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋”์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•˜์œ„ ์ˆ˜์ค€ ์ธํ”„๋ผ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

 

 

 

Repository ํŒจํ„ด  : ์š”์•ฝ ๋ฐ ์ •๋ฆฌ

 

ํŠน์„ฑ 

(1) ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ(Local Data Source, Remote Data Source)๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ค‘์•™ ์ง‘์ค‘ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

(2) ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Domain์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ViewModel์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ์ปฌ DB์—์„œ ์˜ค๋Š”์ง€, ์„œ๋ฒ„์—์„œ API ์‘๋‹ต์„ ํ†ตํ•ด ์˜ค๋Š” ๊ฒƒ์ธ์ง€ ์ถœ์ฒ˜๋ฅผ ๋ชฐ๋ผ๋„ ๋œ๋‹ค. Repository๋ฅผ ์ฐธ์กฐํ•˜์—ฌ Repository๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

(3) Repository๊ฐ€ ์ถ”์ƒํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ ๊ฐ™์€ Interface๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
ViewModel์ด ์—ฌ๋Ÿฌ Repository๋ฅผ ๊ณต์œ ํ•˜๋”๋ผ๋„ ์ผ๊ด€๋œ Interface๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋˜ํ•œ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์žฅ์ 
(1) ๋ฐ์ดํ„ฐ ๋กœ์ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค

(2) Domain์—์„œ๋Š” ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

(3) ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์Аํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋” ์ ํ•ฉํ•˜๋‹ค.

(4) ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•œ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(5) ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค.

(6) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด์ ์ธ ๋””์ž์ธ์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ์•„ํ‚คํ…์ณ์ด๋‹ค.

 

 

 

๊ธฐํƒ€ ์ฐธ๊ณ  : https://velog.io/@shinsw627/Repository-Pattern-%EA%B5%AC%ED%98%84

 

https://4z7l.github.io/2020/11/24/repository-pattern.html

 

 

 

 

 

 

728x90

'๋””์ž์ธํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋””์ž์ธํŒจํ„ด] MVC  (0) 2022.05.24
    '๋””์ž์ธํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋””์ž์ธํŒจํ„ด] MVC
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”