๐Ÿƒ Spring(์Šคํ”„๋ง)์ด๋ž€?

CR7_Fantasticยท2025๋…„ 1์›” 16์ผ

์˜ค๋Š˜ ์‹œ๊ฐ„์—๋Š” ์Šคํ”„๋ง์— ๋Œ€ํ•œ ๊ฐœ๋…๊ณผ ํŠน์ง•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ €์™€๊ฐ™์ด ์Šคํ”„๋ง์ด ์–ด๋–ค๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ณ  ์ด์šฉํ•œ ๋ชจ๋‘์—๊ฒŒ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

์Šคํ”„๋ง์˜ ์ •์˜

  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์šฉ Java ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ• ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฒฝ๋Ÿ‰๊ธ‰ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ
    • ํ”„๋ ˆ์ž„์›Œํฌ๋ž€? ์–ด๋– ํ•œ ๋ชฉ์ ์„ ์‰ฝ๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ๋ชฉ์ ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ์˜ ๋ผˆ๋Œ€๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘”๊ฒƒ.
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ์— ์žˆ์–ด ํ•„์š”ํ•œ ๋ชจ๋“  ์—…๋ฌด ๋ถ„์•ผ ๋ฐ ๋ชจ๋“  ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋“ค์˜ ๋ผˆ๋Œ€๋ฅผ ์ œ๊ณต

์Šคํ”„๋ง์˜ ํŠน์ง•

  • POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€ํ–ฅ(์Šคํ”„๋ง์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•)

    Plain Old Java Object โ†’ ์ˆœ์ˆ˜ ์ž๋ฐ”๋งŒ์„ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธ. ์ฆ‰, ๋‹ค๋ฅธ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ Java๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  ๊ฐ์ฒด

    Import๋ฌธ์„ ํ†ตํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ์ฒด๋Š” ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”๋งŒ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์‹ ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๊ณ ์ณ์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋“ค์˜ ์ฝ”๋“œ๋ฅผ ์ „๋ถ€ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผํ•จ

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

    POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ์Šคํ”„๋ง์ด ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ ์€IoC/DI,ย AOP,ย PSA๊ฐ€ ์žˆ์Œ.

    IoC / DI (Inversion of Control / Dependency Injection, ์ œ์–ด์˜ ์—ญ์ „ / ์˜์กด์„ฑ ์ฃผ์ž…)

    ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์ด๋ฏ€๋กœ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ ์ ˆํžˆ ๋งบ์–ด์ฃผ๋Š”๊ฒƒ์€ ์ค‘์š”ํ•œ ์š”์†Œ. A ์ธ์Šคํ„ด์Šค๊ฐ€ B ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋Š” ์˜์กด๊ด€๊ณ„๋ฅผ ๋งบ์€ ๊ฒƒ์ด๊ณ  โ€œA๊ฐ€ B์— ์˜์กดํ•˜๊ณ  ์žˆ๋‹คโ€ ๋ผ๊ณ  ์„ค๋ช…. ๋งŒ์•ฝ, A๊ฐ€ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ B๊ฐ€ ์•„๋‹ˆ๋ผ, ์ƒˆ๋กญ๊ฒŒ C๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ.

    ๋งŒ์•ฝ ๊ธฐ์กด์— B๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๊ฐ์ฒด๊ฐ€ A ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ˆ˜์‹ญ ๋˜๋Š” ์ˆ˜๋ฐฑ๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ์Šคํ”„๋ง์„ ์ด์šฉํ•˜๋ฉด ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์— ์ตœ์†Œํ•œ์˜ ์ˆ˜์ •๋งŒ์œผ๋กœ ๋ณ€ํ™”๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์šฉ์ด ๊ฐ€๋Šฅํ•จ.

    A๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ์Šค์Šค๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๊ณ  ์žˆ๋‹ค.ย ์ฆ‰, A๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ, ๊ทธ์ €ย i์— ํ• ๋‹น๋œ ์ธ์Šคํ„ด์Šค์—ย example()์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ๊ณ  ์žˆ๋‹ค.

    ๋ˆ„๊ตฐ๊ฐ€ A๊ฐ€ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์ƒ์„ฑํ•ด์„œ A๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋  ๋•Œ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ๋งŒ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ A๋Š” B์˜ ๊ฒƒ์ด๋“ , C์˜ ๊ฒƒ์ด๋“ ย example()ย ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?

    ๊ทธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐ”๋กœ ์Šคํ”„๋ง์ด๋‹ค. ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ์ง ์™ธ๋ถ€์—์„œ A๊ฐ€ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ • ํด๋ž˜์Šค ํŒŒ์ผ์— A๊ฐ€ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ C๋กœ ์„ค์ •ํ•ด๋‘๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•˜๋ฉด์„œ ์Šคํ”„๋ง์ด ์„ค์ • ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•ด์„ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ •ํ•ด๋‘”๋Œ€๋กœ C ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ A์˜ ์ƒ์„ฑ์ž์˜ ์ธ์ž๋กœ C๋ฅผ ์ „๋‹ฌํ•ด๋‘”๋‹ค.

    ์ด์ฒ˜๋Ÿผย ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง์ด A๊ฐ€ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ๊ฒƒ์„ IoC(Inversion of Control, ์ œ์–ด์˜ ์—ญ์ „)๋ผ๊ณ  ํ•˜๋ฉฐ, ๊ทธ ๊ณผ์ •์—์„œ C๋ฅผ A์˜ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฒƒ์„ DI(Dependency Injection, ์˜์กด์„ฑ ์ฃผ์ž…)๋ผ๊ณ  ํ•œ๋‹คโ€ฆ

    AOP (Aspect Oriented Programming, ๊ด€์‹ฌ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ์— ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ํฌ๊ฒŒย ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผย ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ €,ย ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๊ด€์‹ฌ ์‚ฌํ•ญ์œผ๋กœ, ์ปคํ”ผ ์ฃผ๋ฌธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ˆ๋กœ ๋“ ๋‹ค๋ฉด ๋ฉ”๋‰ด ๋“ฑ๋กํ•˜๊ธฐ, ์ฃผ๋ฌธํ•˜๊ธฐ, ์ฃผ๋ฌธ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋“ฑ์ด ์žˆ์„ ๊ฒƒ์ž„.

    ๋ฐ˜๋ฉด,ย ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์€ ๋ชจ๋“  ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์— ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ด€์‹ฌ ์‚ฌํ•ญ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.ย ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”๋‰ด ๋“ฑ๋กํ•˜๊ธฐ, ์ฃผ๋ฌธํ•˜๊ธฐ, ์ฃผ๋ฌธ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋“ฑ ๋ชจ๋“  ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์—๋Š” ๋กœ๊น…์ด๋‚˜ ๋ณด์•ˆ ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๋“ค์ด ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค.

    ์ด ๋•Œ, ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์ด ์ฝ”๋“œ์— ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ๊ป˜ ๋ชจ์—ฌ ์žˆ์œผ๋ฉด ํ•„์—ฐ์ ์œผ๋กœย ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋จ. ์ด์ฒ˜๋Ÿผ ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜์–ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ,ย ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋กœ์ง์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ชจ๋“  ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ์ผ์ผ์ด ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

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

    PSA (Portable Service Abstraction, ์ผ๊ด€๋œ ์„œ๋น„์Šค ์ถ”์ƒํ™”)

    ์Šคํ”„๋ง์€ ์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ์žˆ์–ด ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋–ผ์–ด๋‚ผ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๊ณ , ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์†Œํ†ตํ•˜๋ฉฐ ์›น ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜๋Š” MySQL, Oracle, Maria DB, Mongo DB ๋‹ค์–‘ํ•˜๋‹ค.

    ๋งŒ์•ฝ MySQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒ, ํ›„์— Maria DB๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๋ฉด ์—„์ฒญ๋‚œ ์–‘์„ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์œ ์ง€ํ•œ ์ฑ„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š”ย ์Šคํ”„๋ง์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋ฅผ ์ถ”์ƒํ™”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์Šคํ”„๋ง์€ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ทœ์ •ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ ์šฉํ•˜๊ณ  ์žˆ๊ณ  , ์ด๋ฅผ JDBC(Java Database Connectivity)๋ผ๊ณ  ํ•จ

    ์ด๋Ÿฌํ•œ JDBC์ฒ˜๋Ÿผย **ํŠน์ • ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ์„œ๋น„์Šค๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ์„ PSA(Portable Service Abstraction, ์ผ๊ด€๋œ ์„œ๋น„์Šค ์ถ”์ƒํ™”)๋ผ๊ณ ํ•จ.

    ์Šคํ”„๋ง๋ถ€ํŠธ(Spring Boot)

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

    ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹คโฃ๏ธ

profile
์šฐ์งํ•œ, ๋‚˜๋ฌด๊ฐ™์€ ๊ฐœ๋ฐœ์ž

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