๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring๐Ÿ€/Spring ๊ธฐ๋ณธ๐Ÿ€๐Ÿ€

๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์™€ ์Šคํ”„๋ง ์ •๋ฆฌ.txt๐Ÿ€

by @ENFJ 2022. 9. 24.

์Šคํ”„๋ง์„ ๊ณต๋ถ€ํ•จ์œผ๋กœ์จ  ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์™€ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์›๋ฆฌ 

์Šคํ”„๋ง์„ ์‚ฌ์šฉํ• ๋•Œ ํ•„์ˆ˜๋กœ ์•Œ์•„์•ผํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜์—ฌ ๊ธ€์„ ์—…๋กœ๋“œ ํ•  ์˜ˆ์ •์ด๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์˜ค๋Š˜์€ ์Šคํ”„๋ง์—๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

์Šคํ”„๋ง

ใ„ด ํ•„์ˆ˜ : ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ, ์Šคํ”„๋ง ๋ถ€ํŠธ

ใ„ด ์„ ํƒ : ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ , ์Šคํ”„๋ง ์„ธ์…˜, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ, ์Šคํ”„๋ง Rest Docs, ์Šคํ”„๋ง ๋ฐฐ์น˜, ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ

 

๊ทธ๋ ‡๋‹ค๋ฉด ํ•„์ˆ˜๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๋ณด์ž.

 

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ

ใ„ด ํ•ต์‹ฌ ๊ธฐ์ˆ 

ใ„ด ์›น ๊ธฐ์ˆ 

ใ„ด ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ 

ใ„ด ๊ธฐ์ˆ  ํ†ตํ•ฉ

ใ„ด ํ…Œ์ŠคํŠธ

ใ„ด ์–ธ์–ด 

 

์ด ๋ชจ๋“ ๊ฑธ ๋‹ค ํฌํ•จํ•˜๋Š”๊ฒƒ์ด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. 

 

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

ใ„ด ์Šคํ”„๋ง์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›, ์ตœ๊ทผ์—๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

์–ผ๋งˆ๋‚˜ ํŽธํ•˜๊ธธ๋ž˜?ใ„ด ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค.ใ„ด ํ†ฐ์บฃ ๊ฐ™์€ ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•ด์„œ ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.ใ„ด ์† ์‰ฌ์šด ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ์œ„ํ•œ starter ์ข…์†์„ฑ ์ œ๊ณตใ„ด ์Šคํ”„๋ง๊ณผ 3rd path(์™ธ๋ถ€) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๊ตฌ์„ฑ

 => ์—„์ฒญ ์„ค์ • ํ•ด์ค„ ๊ฒƒ๋“ค์ด ๋งŽ์•˜๋Š”๋ฐ ๋งŽ์ด ๊ฐ„๊ฒฐํ•ด ์กŒ๋‹ค.

 

 

๋กœ๋“œ์กด์Šค!   Spring .. ์™œ ๋งŒ๋“ค์—ˆ์„๊นŒ?

1. ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ณ , db์ ‘๊ทผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ?

2. ์ „์ž์ •๋ถ€ํ”„๋ ˆ์ž„์›Œํฌ?

3. ์›น์„œ๋ฒ„๋„ ์ž๋™์œผ๋กœ ๋„์›Œ์ฃผ๋Š”๊ฑฐ?

 

์•„๋‹ˆ๋‹ค... ์ด๊ฒƒ์€ ๊ฒฐ๊ณผ๋ฌผ์ผ ๋ฟ์ด๊ณ  ์ง„์งœ

==> ์Šคํ”„๋ง์˜ ์ง„์งœ ํ•ต์‹ฌ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1.  ์Šคํ”„๋ง์€ ์ž๋ฐ”์–ธ์–ด ๊ธฐ๋ฐ˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

2. ์ž๋ฐ” ์–ธ์–ด์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• - ๊ฐ์ฒด ์ง€ํ–ฅ์–ธ์–ด

3. ์Šคํ”„๋ง์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง„ ๊ฐ•๋ ฅํ•œ ํŠน์ง•์„ ์‚ด๋ ค๋‚ด๋Š” ํ”„๋ ˆ์ž„์›Œํฌ.

4. ์Šคํ”„๋ง์€ ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

 

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋จ.

์ฆ‰, ๋ ˆ๊ณ  ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๋“ฏ์ด / ํ‚ค๋ณด๋“œ ๋งˆ์šฐ์Šค ๊ฐˆ์•„ ๋ผ์šฐ๋“ฏ์ด/ ์ปดํ“จํ„ฐ ๋ถ€ํ’ˆ ๊ฐˆ์•„ ๋ผ์šฐ๋“ฏ์ด/ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• 

์ฆ‰, ๋‹คํ˜•์„ฑ(polymorphism) ์ด๋‹ค.

 

๋‹คํ˜•์„ฑ์„ ์‹ค์„ธ๊ณ„์— ๋น„์œ ํ•ด๋ณด์ž. (์ฐธ๊ณ ๋กœ ์‹ค์„ธ๊ณ„์™€ ๊ฐ์ฒด ์ง€ํ–ฅ์„ 1:1๋กœ ๋งค์นญํ•˜๊ธฐ๋Š” ํž˜๋“ค๊ณ  ๋ชจ์ˆœ์ ์ธ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น„์œ ๋กœ ์ดํ•ดํ•˜๊ธฐ์— ์ข‹๋‹ค.)

 

์—ญํ•  ๊ณผ ๊ตฌํ˜„์œผ๋กœ ์„ธ์ƒ์„ ๊ตฌ๋ถ„ํ•ด๋ณด๊ฒ ๋‹ค.

์—ญํ• ์ด ์ธํ„ฐํŽ˜์ด์Šค / ๊ตฌํ˜„์ด  ๊ฐ์ฒด

 

์˜ˆ์‹œ 1  

์šด์ „์ž(์—ญํ• ) - ์ž๋™์ฐจ(์—ญํ• ) 

 ใ„ด ํ™๊ธธ๋™                 ใ„ด ํ˜„๋Œ€, ๊ธฐ์•„, ํ…Œ์Šฌ๋ผ, ์•„์šฐ๋””, ๋ฒค์ธ , BMW...

 

์—ฌ๊ธฐ์„œ ํ™๊ธธ๋™์€ ํ˜„๋Œ€ ์ž๋™์ฐจ๋ฅผ ํƒ€๋‹ค๊ฐ€ ๊ธฐ์•„ ์ž๋™์ฐจ๋กœ ๋ฐ”๊พธ๋ฉด ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€? NO

์šด์ „์ž์ธ ํ™๊ธธ๋™์ด ํ˜„๋Œ€ ์ž๋™์ฐจ๋ฅผ ํƒ€๋‹ค๊ฐ€ ์•„์šฐ๋”” / ๋ฒค์ธ  ๋กœ ๋ฐ”๊พธ๋ฉด ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€? NO

์ฆ‰, ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค๋•Œ ๋™์ผํ•œ ์—ญํ•  ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์šด์ „์ž๋Š” ์ž๋™์ฐจ์˜ ๋‚ด๋ถ€๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋„ ์šด์ „ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ ์šด์ „์ž๋Š” ์ž๋™์ฐจ์— ๋”ฐ๋ผ ์šด์ „๋ฒ•์„ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†๋‹ค.

์ฆ‰, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ 2

๋กœ๋ฏธ์˜ค์™€ ์ค„๋ฆฌ์—ฃ ๊ณต์—ฐ

 

๋กœ๋ฏธ์˜ค ์—ญํ•  - ์ค„๋ฆฌ์—ฃ ์—ญํ• 

  ใ„ด์›๋นˆ, ์žฅ๋™๊ฑด     ใ„ด ๊น€ํƒœํฌ , ์†กํ—ค๊ต  ...

 

๋กœ๋ฏธ์˜ค ์—ญํ• ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ•˜๋”๋ผ๋„ ๋กœ๋ฏธ์˜ค ์—ญํ• ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

 

์—ญํ• == ์ธํ„ฐํŽ˜์ด์Šค : ์šด์ „์ž๋Š” ์ „๊ธฐ์ž๋™์ฐจ ๋“  ๋‚ด์—ฐ์ž๋™์ฐจ๋“  ๊ตญ๋‚ด/ํ•ด์™ธ ์ž๋™์ฐจ ๊ตฌ๋ถ„์—†์ด ์ž๋™์ฐจ ์šด์ „ ๊ฐ€๋Šฅํ•˜๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ์ž๋™์ฐจ๋Š” ์—‘์…€์„ ๋ฐฃ์œผ๋ฉด ์•ž์œผ๋กœ ๊ฐ„๋‹ค๋Š”๊ฑด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—.

 

  ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค) ๊ณผ ๊ตฌํ˜„(๊ฐ์ฒด, ํด๋ž˜์Šค)์„ ๋ถ„๋ฆฌ

์—ญํ• ๊ณผ ๊ตฌํ˜„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด ์„ธ์ƒ์ด ๋‹จ์ˆœํ•ด์ง€๊ณ , ์œ ์—ฐํ•ด์ง€๋ฉฐ ๋ณ€๊ฒฝ๋„ ํŽธ๋ฆฌํ•ด์ง„๋‹ค.

์žฅ์ 

1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€์ƒ์ด ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)๋งŒ ์•Œ๋ฉด๋œ๋‹ค.

2. ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

3. ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

4. ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

์—ญํ•  = ์ธํ„ฐํŽ˜์ด์Šค

๊ตฌํ˜„ = ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค, ๊ตฌํ˜„ ๊ฐ์ฒด

 

๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ• ๋–„๋Š” ์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ ํ•œ๋‹ค.

๊ฐ์ฒด ์„ค๊ณ„์‹œ ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)์„ ๋จผ์ € ๋ถ€์—ฌํ•˜๊ณ , ๊ทธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.

(์ฆ‰, ์•ž์—์„œ ๋น„์œ ๋กœ ์‚ฌ์šฉํ–ˆ๋˜ ์šด์ „์ž/์ž๋™์ฐจ ์—์„œ ๋ณด๋ฉด, ์šด์ „ ๋ฐฉ๋ฒ•์„ ๋จผ์ € ๋ถ€์—ฌํ•˜๊ณ , ๊ทธ ์šด์ „์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์šด์ „์ž๋ฅผ ๋งŒ๋“ ๋‹ค )

=> ๊ตฌํ˜„ ๋ณด๋‹ค ์—ญํ• ์ด ๋” ์ค‘์š”ํ•˜๋‹ค!

 

 

์ˆ˜๋งŽ์€ ๊ฐ์ฒด ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ์ฒด ์„œ๋ฒ„๋Š” ์„œ๋กœ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

ใ„ด ํด๋ผ์ด์–ธํŠธ : ์š”์ฒญ

ใ„ด ์„œ๋ฒ„: ์‘๋‹ต

 

์ž๋ฐ”์–ธ์–ด์˜ ๋‹คํ˜•์„ฑ

์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ์ž๋ฐ” ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์ด๋‹ค.

์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ, ๋‹คํ˜•์„ฑ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  ํด๋ž˜์Šค ์ƒ์†๊ด€๊ณ„๋„ ๋‹คํ˜•์„ฑ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์ ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์˜ค๋ฒ„ ๋กœ๋”ฉ: ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์œ ํ˜•๊ณผ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ 

class OverloadingTest{
    //์ด๋ฆ„์ด cat์ธ ๋ฉ”์„œ๋“œ
    void cat(){
        System.out.println("๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์Œ");
    }
    
    //๋งค๊ฐœ๋ณ€์ˆ˜ intํ˜•์ด 2๊ฐœ์ธ cat ๋ฉ”์„œ๋“œ
    void cat(int a, int b){
        System.out.println("๋งค๊ฐœ๋ณ€์ˆ˜ :"+a+", "+b);
    }
    
    //๋งค๊ฐœ๋ณ€์ˆ˜ Stringํ˜•์ด ํ•œ ๊ฐœ์ธ cat ๋ฉ”์„œ๋“œ
    void cat(String c){
        System.out.println("๋งค๊ฐœ๋ณ€์ˆ˜ : "+ c);
    }
    
}


public class OverTest {
 
    public static void main(String[] args) {
        
        //OverloadingTest ๊ฐ์ฒด ์ƒ์„ฑ
        OverloadingTest ot = new OverloadingTest();
        
        //๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” cat() ํ˜ธ์ถœ
        ot.cat();
        
        //๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ intํ˜• ๋‘๊ฐœ์ธ cat() ํ˜ธ์ถœ
        ot.cat(20, 80);
        
        //๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ String ํ•œ๊ฐœ์ธ cat() ํ˜ธ์ถœ
        ot.cat("์˜ค๋ฒ„๋กœ๋”ฉ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.");
        
    }
 
}

์˜ค๋ฒ„ ๋ผ์ด๋”ฉ: ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉ

 

class Woman{ //๋ถ€๋ชจํด๋ž˜์Šค
    public String name;
    public int age;
    
    //info ๋ฉ”์„œ๋“œ
    public void info(){
        System.out.println("์—ฌ์ž์˜ ์ด๋ฆ„์€ "+name+", ๋‚˜์ด๋Š” "+age+"์‚ด์ž…๋‹ˆ๋‹ค.");
    }
    
}
 
class Job extends Woman{ //Womanํด๋ž˜์Šค(๋ถ€๋ชจํด๋ž˜์Šค)๋ฅผ ์ƒ์†๋ฐ›์Œ : 
 
    String job;
    
    public void info() {//๋ถ€๋ชจ(Woman)ํด๋ž˜์Šค์— ์žˆ๋Š” info()๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜
        super.info();
        System.out.println("์—ฌ์ž์˜ ์ง์—…์€ "+job+"์ž…๋‹ˆ๋‹ค.");
    }
}
 
public class OverTest {
 
    public static void main(String[] args) {
        
        //Job ๊ฐ์ฒด ์ƒ์„ฑ
        Job job = new Job();
        
        //๋ณ€์ˆ˜ ์„ค์ •
        job.name = "์œ ๋ฆฌ";
        job.age = 30;
        job.job = "ํ”„๋กœ๊ทธ๋ž˜๋จธ";
        
        //ํ˜ธ์ถœ
        job.info();
        
    }
 
}

์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ ์„ฑ๋ฆฝ์กฐ๊ฑด https://private.tistory.com/25

 

ํด๋ผ์ด์–ธํŠธ๋Š” MemberReposiotry(๋ฉค๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ)๋ฅผ ์˜์กดํ•œ๋‹ค.

 

๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰์‹œ์ ์— ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

=>๋‹น์—ฐํ•˜๋‹ค. ์ž๋™์ฐจ ์šด์ „๋ฒ•์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด , A์šด์ „์ž์—์„œ B์šด์ „์ž๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ํ˜‘๋ ฅ์ด๋ผ๋Š” ๊ฐ์ฒด์‚ฌ์ด์˜ ๊ด€๊ณ„์—์„œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.

 

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

 

 

์ด์ œ ๊ทธ ๋‹คํ˜•์„ฑ์„ ์‹ค์ œ ๊ตฌํ˜„์—์„œ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์•„๋ž˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด์ž

 

๋‚˜๋„ ์ฒ˜์Œ์— ๊ณต๋ถ€ํ• ๋•Œ ์ด๊ฒŒ ๋ฌด์Šจ ์†Œ๋ฆฌ์ง€? ํ•˜๋ฉด์„œ ๊ณ ํ†ต์Šค๋Ÿฌ์› ๋‹ค...๐Ÿค”๐Ÿค”

 

์ธํ„ฐํŽ˜์ด์Šค save() ์˜ ์˜๋ฏธ๋ฅผ ์ฃผ์ฐจ ๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž

               MemberService๐Ÿ’™ ๊ฐ€ ์šด์ „์ž ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž

                interface์ธ MemberRepository ๋ฅผ ์ž๋™์ฐจ ์ด๋‹ค.(์ด๋–„ ์–ด๋–ค ์ž๋™์ฐจ์ธ์ง€๋Š” ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ƒฅ ์ž๋™์ฐจ๊ฐ€ ์ฃผ์ฐจ๋  ์ฐจ๊ณ  ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž)

Memory MemberRepositorySave()๐Ÿ’— ๋Š” ํ˜„๋Œ€ ์ž๋™์ฐจ 

JdbcMemberRepositorySave() ๐Ÿ’š๋Š” ๊ธฐ์•„ ์ž๋™์ฐจ ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์šด์ „์ž MemberService๐Ÿ’™๋Š” ์ฐจ๊ณ ์— ์–ด๋–ค ์ž๋™์ฐจ๋ฅผ ์ฃผ์ฐจํ• ์ง€ ์„ ํƒ์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ์ฃผ์ฐจ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ด๊ฒŒ ๋ฐ”๋กœ ๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ์ด๋‹ค!!๐Ÿ˜ฎ๐Ÿ˜ฎ๐Ÿ˜ฎ

> ํด๋ผ์ด์–ธํŠธ(์šด์ „์ž๐Ÿ’™)๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ๐Ÿ’—๐Ÿ’š์„ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ๋‹ค <

 

(์ดํ•ด๊ฐ€ ์•ˆ๋œ๋‹ค๋ฉด ์œ„์— ์˜ˆ์‹œ1 ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๋ณด๊ณ  ์˜ค์ž..๊ทธ๋ž˜๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋ฉด ๐Ÿ˜ฅ) 

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฑด ๋ญ˜๊นŒ?

=> ๋ˆˆ์น˜ ์ฑ˜์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

์™œ๋ƒ? ์‹ค์„ธ๊ณ„์— ์ธํ„ฐํŽ˜์ด์Šค ๋Š” ์šด์ „๋ฒ• ์œผ๋กœ ์˜ˆ์‹œ๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

์ฐจ๋งˆ๋‹ค ์šด์ „๋ฒ•์ด ๋‹ค๋ฅด๋ฉด ๋‹น์—ฐํžˆ ์šด์ „์ž์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์šฐ๋ฆฌ๋Š” ์šด์ „๋ฒ•์ด ๋™์ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ธŒ๋žœ๋“œ๊ฐ€ ๋‹ค๋ฅด๋”๋ผ๋„ ์šด์ „ํ•˜๋Š”๋ฐ ํฐ ๋ฌธ์ œ์—†์ด ์šด์ „ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.