๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Today I Learned(TIL)/์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

์ฃผํŠน๊ธฐ ์ž…๋ฌธ/์ˆ™๋ จ_Day 13

by carrot0911 2024. 12. 11.

์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง 

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ(Java) 1๋ฌธ์ œ ํ’€์ด & ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ
  • Spring ์ˆ™๋ จ ๊ฐ•์˜ ๋“ฃ๊ธฐ (2์ฃผ์ฐจ)
  • ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ
  • Spring ์ˆ™๋ จ ๊ฐ•์˜ ๋“ฃ๊ธฐ (3์ฃผ์ฐจ ์‹ค์Šต ๊ฐ•์˜ ์ „๊นŒ์ง€)
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ

 

์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ 

๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ดํ•ด๊ฐ€ ์•ˆ๋๋˜ ๋ถ€๋ถ„๋“ค ๋”ฐ๋กœ ๊ตฌ๊ธ€๋งํ•ด์„œ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!

์ฆ‰์‹œ ๋กœ๋”ฉ (Immediate Loading)

fetch = fetchType.EAGER

Entity๋ฅผ ์กฐํšŒํ•  ๋•Œ ํ•ด๋‹น Entity์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  Entity๋ฅผ ๋™์‹œ์— ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

A Entity์™€ B Entity๊ฐ€ ์—ฐ๊ด€๋˜์–ด ์žˆ์„ ๋•Œ, A๋ฅผ ์กฐํšŒํ•˜๋ฉด B๋„ ํ•จ๊ป˜ ์กฐํšŒ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•„์š”ํ•œ ์‹œ์ ์— ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์กฐ์ธ ๋“ฑ์˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ฆ‰์‹œ ๋กœ๋”ฉ์„ ์„ ํƒํ•˜๋Š” ์ด์œ 

  1. ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค.
    • ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•  ๋•Œ ์—ฐ๊ด€๋œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํ•œ ๋ฒˆ์— ๋กœ๋”ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ชจ๋“  ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ๋กœ๋”ฉ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ„๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ์—†์ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ๋”ฐ๋ผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ณต์žกํ•œ ์กฐํšŒ๋ฅผ ๋‹จ์ˆœํ™”ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ Join์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ํ•ด๊ฒฐํ•  ํ•„์š” ์—†์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

โญ ์ง€์—ฐ ๋กœ๋”ฉ (Lazy Loading)

fetch = fetchType.LAZY

๊ฐ์ฒด๋ฅผ Proxy๋กœ ๊ฐ€์ ธ์˜จ ํ›„ ์‹ค์ œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์— ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
์—ฐ๊ด€๋œ Entity๋ฅผ ์ฒ˜์Œ์—๋Š” ์กฐํšŒํ•˜์ง€ ์•Š๊ณ , ์‹ค์ œ๋กœ ํ•ด๋‹น Entity๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
A Entity๋ฅผ ์กฐํšŒํ•ด๋„ B Entity๋Š” ์ดˆ๊ธฐ์— ์กฐํšŒ๋˜์ง€ ์•Š๊ณ , B Entity๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ์˜ ์ตœ์ ํ™”์™€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
์—ฐ๊ด€ Entity๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ JPA ๊ตฌํ˜„์ฒด์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
Entity ํด๋ž˜์Šค์˜ ์—ฐ๊ด€ ๊ด€๊ณ„ ํ•„๋“œ์— @ManyToOne , @OneToMany , @OneToOne , @ManyToMany ์™€ ๊ฐ™์€ Annotation์„ ์‚ฌ์šฉํ•  ๋•Œ fetch ์†์„ฑ์„ ์ง€์ •ํ•˜์—ฌ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.
์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์—ฐ๊ด€๋œ Entity์— ์ ‘๊ทผํ•ด์•ผ๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

์ง€์—ฐ ๋กœ๋”ฉ์„ ์„ ํƒํ•˜๋Š” ์ด์œ 

  1. ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰์‹œ ๋กœ๋”ฉ์€ ๋ชจ๋“  ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋กœ๋”ฉ๋  ์ˆ˜ ์žˆ๊ณ  ์ด๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ง€์—ฐ ๋กœ๋”ฉ์€ ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ์ตœ์ ํ™”๋œ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์ด ์ตœ์ ํ™”๋œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ์ „์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๊ฐ€ ๋ถ„์‚ฐ๋  ์ˆ˜ ์žˆ๋‹ค.
  3. ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ์ฒด ๊ฐ„์˜ ์—ฐ๊ด€ ๊ด€๊ณ„์—์„œ ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ์ค„์–ด๋“ ๋‹ค.
    • ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋กœ๋”ฉ๋˜๋ฏ€๋กœ ๋ฌดํ•œํ•œ ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰์‹œ ๋กœ๋”ฉ์€ ์—ฐ๊ด€๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ง€์—ฐ ๋กœ๋”ฉ์€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” ๋ชจ๋“  ์—ฐ๊ด€ ๊ด€๊ณ„์— ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค!
์ฆ‰์‹œ ๋กœ๋”ฉ์„ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ SQL์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

1์ฐจ ์บ์‹œ

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ๋‚ด๋ถ€์—๋Š” ์žˆ๋Š” Entity๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ 1์ฐจ ์บ์‹œ๋ผ๊ณ  ํ•œ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€๋งŒ 1์ฐจ ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜๋‹ค.
1์ฐจ ์บ์‹œ๋Š” Key-Value ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • Key : DB์˜ ๊ธฐ๋ณธํ‚ค
  • Value : Entity

EntityManger๋ฅผ ํ†ตํ•ด find ๋ช…๋ น์œผ๋กœ DB๋ฅผ ์กฐํšŒํ–ˆ์„ ๋•Œ, DB๋ฅผ ๋จผ์ € ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ 1์ฐจ ์บ์‹œ๋ฅผ ๋จผ์ € ์กฐํšŒํ•œ๋‹ค.
find ์‹œ์— ์ž…๋ ฅ ๋ฐ›์€ id ๊ฐ’์ด 1์ฐจ ์บ์‹œ์— ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ’์„ ์ฐพ์•„ returnํ•ด์ค€๋‹ค.

persist๋ฅผ ํ•œ ๋‹ค์Œ, find๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด find ์ˆ˜ํ–‰ ์‹œ DB๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š๊ณ  1์ฐจ ์บ์‹œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— select ์ฟผ๋ฆฌ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
์‹ค์ œ ๊ฒฐ๊ณผ๋„ insert ์ฟผ๋ฆฌ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

1์ฐจ ์บ์‹œ์— ๊ฐ’์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ?!

  1. find ์‹œ, 1์ฐจ ์บ์‹œ๋ฅผ ์กฐํšŒํ•œ๋‹ค.
  2. 1์ฐจ ์บ์‹œ์— ์ž…๋ ฅ ๋ฐ›์€ id๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด DB๋ฅผ ์กฐํšŒํ•œ๋‹ค.
  3. DB์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ 1์ฐจ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค.
  4. 1์ฐจ ์บ์‹œ์— ์ €์žฅํ•œ ๊ฐ’์„ returnํ•œ๋‹ค.

1์ฐจ ์บ์‹œ์˜ ํ•œ๊ณ„

์‚ฌ์‹ค 1์ฐจ ์บ์‹œ๋Š” ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ์ œ๊ณตํ•ด์ฃผ์ง€ ๋ชปํ•œ๋‹ค..
์š”์ฒญ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ์š”์ฒญ์ด ๋๋‚˜๊ณ  ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— 1์ฐจ ์บ์‹œ๋Š” ํฐ ๋„์›€์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
๋ฌผ๋ก  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๊ต‰์žฅํžˆ ๋ณต์žกํ•œ ๊ฒฝ์šฐ์—” ์ฟผ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ค๊ธด ํ•˜์ง€๋งŒ, 1์ฐจ ์บ์‹œ์˜ ์„ฑ๋Šฅ๋ณด๋‹ค ๋งค์ปค๋‹ˆ์ฆ˜์—์„œ ์–ป๋Š” ์ด์ ์ด ๋” ํฌ๋‹ค.

2์ฐจ ์บ์‹œ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ณต์œ ํ•˜๋Š” ์บ์‹œ๋ฅผ JPA๋Š” ๊ณต์œ  ์บ์‹œ(Shared Cache)๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ 2์ฐจ ์บ์‹œ(Second Level Cache, L2 Cache) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

2์ฐจ ์บ์‹œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ”์œ„์˜ ์บ์‹œ์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ๊ฐ€ 1์ฐจ ์บ์‹œ๋งŒ ์‚ฌ์šฉํ•  ๋•Œ ๋ณด๋‹ค ํš๊ธฐ์ ์œผ๋กœ ์ค„์–ด๋“ ๋‹ค.
1์ฐจ ์บ์‹œ์—์„œ Entity๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์—†์œผ๋ฉด 2์ฐจ ์บ์‹œ์—์„œ Entity๋ฅผ ์ฐพ๋Š”๋‹ค.
์ฐพ๋Š” Entity๊ฐ€ ์กด์žฌํ•˜๋ฉด 2์ฐจ ์บ์‹œ์—์„œ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด DB๋ฅผ ์กฐํšŒํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์ด๋•Œ 2์ฐจ ์บ์‹œ๋Š” ๋™์‹œ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•˜๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ

์˜ค๋Š˜์€ ์˜ค์ „์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€๊ณ  ๊ฐœ์ธ ๊ณผ์ œ ๋ฐœ์ œ๋ฅผ ๋“ค์—ˆ๋‹ค.
Spring ์ž…๋ฌธ ์ฃผ์ฐจ์˜ ๊ณผ์ œ์—์„œ Develop์„ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์›Œ๋ณด์ด๋ฉด์„œ๋„ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ์„๊นŒ..? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์˜คํ›„์—๋Š” ๊ณ„์†ํ•ด์„œ Spring ์ˆ™๋ จ ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค!
์ž…๋ฌธ ๊ฐ•์˜๋ณด๋‹ค๋Š” ์ดํ•ด๊ฐ€ ์ž˜๋˜์„œ ์ง„๋„๊ฐ€ ์ญ‰์ญ‰ ๋‚˜๊ฐ”๋Š”๋ฐ ๊ทธ ์ค‘์—์„œ๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„๋“ค์€ ๋”ฐ๋กœ ๋ฉ”๋ชจํ•ด๋‘๊ณ  ์ €๋… ์‹œ๊ฐ„ ์ดํ›„์— ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉด์„œ ์ดํ•ดํ–ˆ๋‹ค!

๊ฐ•์˜ ๋“ฃ๋Š” ์ค‘๊ฐ„์— ์ง‘์ค‘๋ ฅ์ด ๋Š๊ฒจ์„œ ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜์„ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ–ˆ๋‹ค! ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•˜๋ฉด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ณต์Šตํ•˜๋‹ˆ๊นŒ ๋‚ด์šฉ์ด ๋” ์ž˜ ๊ธฐ์–ต๋˜๋Š” ๋Š๋‚Œ์ด์—ˆ๋‹ค! ์–ด์ œ ํŠœํ„ฐ๋‹˜์˜ ์„ค๋ช…์ด ๊ท€์— ์™์™ ๋“ค์–ด์™€์„œ ๊ทธ๋Ÿฐ๊ฐ€ ๐Ÿ˜ƒ๐Ÿ˜ƒ๐Ÿ˜ƒ

์˜ค๋Š˜ ํ•˜๋ฃจ๋„ ์•Œ์ฐจ๊ฒŒ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ž˜ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค๋Š˜ ํ•˜๋ฃจ์ข…์ผ ์—ด์‹ฌํžˆ ๊ฐ•์˜ ๋“ค์œผ๋ฉด์„œ ์ดํ•ดํ–ˆ์œผ๋‹ˆ๊นŒ ํ‘น ์‰ฌ๊ณ  ๋‚ด์ผ๋„ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค!!!

๋‚ด์ผ ํ•˜๋ฃจ๋„ ํž˜๋‚ด๋ณด์ž!!

 

๋‚ด์ผ ๊ณ„ํš โฐ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ(Java) 1๋ฌธ์ œ ํ’€์ด & ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ
  • Spring ์ˆ™๋ จ ๊ฐ•์˜ ๋“ฃ๊ธฐ (3์ฃผ์ฐจ)
  • Spring ์ˆ™๋ จ ๊ฐ•์˜ ๋‚ด์šฉ ์ „์ฒด์ ์œผ๋กœ ๋ณต์Šต
  • ๊ณผ์ œ ์‹œ์ž‘ํ•ด๋ณด๊ธฐ(?)
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ

+ ์ถ”๊ฐ€๋กœ ๊ณ„ํš์ด ๋” ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Šด๋‹ค~_~