์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

[Java ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ ์‹ฌํ™”ํŽธ] Spring Core + H2 ๊ธฐ๋ฐ˜ ํ‘ธ๋“œ ํŠธ๋Ÿญ ํ‚ค์˜ค์Šคํฌ ์‹œ์Šคํ…œ ์ œ์ž‘

์‹ค๋ฌด ๊ฐ๊ฐ์„ ํ‚ค์šฐ๊ณ  ์‹ถ์€ ์ž…๋ฌธ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Java ์‹ฌํ™” ํ”„๋กœ์ ํŠธ ๊ฐ•์˜! Spring Core, JdbcClient, H2 DB๋กœ ๊ตฌ์„ฑ๋œ ์ฝ˜์†” ๊ธฐ๋ฐ˜ ํ‚ค์˜ค์Šคํฌ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ์„ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

(5.0) ์ˆ˜๊ฐ•ํ‰ 2๊ฐœ

์ˆ˜๊ฐ•์ƒ 48๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์นด์นด์˜ค ๋ชจ๋นŒ๋ฆฌํ‹ฐ
NHN KCP
์นด์นด์˜คํŽ˜์ด
๋ฐฐ๋‹ฌ์˜๋ฏผ์กฑ
์ž‰์นด์ธํ„ฐ๋„ท
์ง๋ฐฉ

์ž‰์นด์ธํ„ฐ๋„ท

์ง๋ฐฉ

์ž„์ง์›๋“ค๋„ ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์žˆ์–ด์š”!

์นด์นด์˜ค ๋ชจ๋นŒ๋ฆฌํ‹ฐ
NHN KCP
์นด์นด์˜คํŽ˜์ด
๋ฐฐ๋‹ฌ์˜๋ฏผ์กฑ
์ž‰์นด์ธํ„ฐ๋„ท
์ง๋ฐฉ

์ž‰์นด์ธํ„ฐ๋„ท

์ง๋ฐฉ

์ž„์ง์›๋“ค๋„ ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์žˆ์–ด์š”!

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ถ„์„ํ•˜๊ณ  ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ์ •๋ฆฌํ•ด ๊ตฌ์กฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์†๋‹˜/๊ด€๋ฆฌ์ž ๊ด€์ ์˜ ์ฝ˜์†” UI๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋„๋ฉ”์ธ ์ค‘์‹ฌ์œผ๋กœ ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹

  • ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ์„ค๊ณ„ํ•˜๋Š” ์‚ฌ๊ณ  ๋Šฅ๋ ฅ

  • ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„์˜ ์‹ค์ „ ์ ์šฉ

  • Spring Core ํ™˜๊ฒฝ์—์„œ JdbcClient๋กœ DB๋ฅผ ์—ฐ๋™ํ•˜๋Š” ์‹ค์Šต ๊ฒฝํ—˜

  • ์‹ค์ œ ์„œ๋น„์Šค์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์ฃผ๋ฌธ/ํŒ๋งค ์‹œ์Šคํ…œ ๊ตฌํ˜„ ๋Šฅ๋ ฅ

  • ๊ธฐ์ดˆ์ ์ธ CRUD๋ฅผ ๋„˜์–ด์„œ ์ƒํƒœ ๋ณ€ํ™”์™€ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๋กœ์ง ๊ตฌ์„ฑ ๋Šฅ๋ ฅ

  • ํด๋ž˜์Šค์™€ record์˜ ์—ญํ•  ๊ตฌ๋ถ„

  • equals()๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด์˜ ๋™๋“ฑ์„ฑ/๋™์ผ์„ฑ ๋น„๊ต์˜ ์‹ค์ œ ํ™œ์šฉ

  • ํ…œํ”Œ๋ฆฟ/์ฝœ๋ฐฑ ํŒจํ„ด์„ ์ด์šฉํ•œ ๊ณตํ†ตํ™” ๊ธฐ๋ฒ•

[Java ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ ์‹ฌํ™”ํŽธ] Spring Core + H2 ๊ธฐ๋ฐ˜ ํ‘ธ๋“œ ํŠธ๋Ÿญ ํ‚ค์˜ค์Šคํฌ ์‹œ์Šคํ…œ ์ œ์ž‘

โ€œJava์™€ Spring Core๋ฅผ ํ™œ์šฉํ•œ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ๋กœ ์‹ค๋ฌด ๊ตฌํ˜„๋ ฅ์„ ํ‚ค์›Œ๋ณด์„ธ์š”!โ€


์ด ๊ฐ•์˜๋Š” ์ฝ˜์†” ๊ธฐ๋ฐ˜ ํ‘ธ๋“œ ํŠธ๋Ÿญ ํ‚ค์˜ค์Šคํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋Š” ์‹ค์ „ํ˜• ํ”„๋กœ์ ํŠธ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
Java ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ฐ–์ถ˜ ์ž…๋ฌธ์ž๋‚˜, Spring์„ ์กฐ๊ธˆ ๊ณต๋ถ€ํ–ˆ์ง€๋งŒ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„์—๋Š” ์ž์‹  ์—†๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
1๋ถ€์—์„œ ๋ฐฐ์šด ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ, ์ด๋ฒˆ์—๋Š” Spring Core, JdbcClient, H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณด๋‹ค ๋ณต์žกํ•œ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ์„ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜์—์„  ์ด๋Ÿฐ ํ˜„์‹ค์ ์ธ ํ‘ธ๋“œ ํŠธ๋Ÿญ ํ‚ค์˜ค์Šคํฌ๋ฅผ ํ†ตํ•œ ์ฃผ๋ฌธ ํ๋ฆ„์„ Java์™€ Spring Core๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

โญ์™œ ์ฃผ๋ฌธ ๋„๋ฉ”์ธ์„ ์•Œ์•„์•ผ ํ• ๊นŒ?

โ€˜์ฃผ๋ฌธโ€™ ๋„๋ฉ”์ธ์€ ์ปค๋จธ์Šค, ๋ฐฐ๋‹ฌ ์•ฑ, ์˜ˆ์•ฝ ์‹œ์Šคํ…œ, ํ‚ค์˜ค์Šคํฌ, ํฌ์Šค ์‹œ์Šคํ…œ ๋“ฑ
๋Œ€๋ถ€๋ถ„์˜ ์‹ค๋ฌด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋นผ๋†“์„ ์ˆ˜ ์—†๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


๋‹จ์ˆœํžˆ "์ƒํ’ˆ์„ ๋‹ด๊ณ  ๊ฒฐ์ œํ•œ๋‹ค"๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด์„œ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ด ์•ˆ์— ๋ชจ๋‘ ๋‹ด๊ฒจ ์žˆ์–ด์š”.

  • ์‚ฌ์šฉ์ž/๊ด€๋ฆฌ์ž ๊ด€์ ์˜ ํ๋ฆ„ ๋ถ„๋ฆฌ

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ โ†’ ๊ฒฐ์ œ โ†’ ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€ํ™” โ†’ ๋ฐฐ์†ก/์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์™„๋ฃŒ

  • ์ฃผ๋ฌธ ์ˆ˜์ •, ์ทจ์†Œ, ๋ฐ˜ํ’ˆ๊ณผ ๊ฐ™์€ ์ƒํƒœ ์ „์ด ์ฒ˜๋ฆฌ

  • ๊ฒฐ์ œ ์—ฐ๋™๊ณผ ์‘๋‹ต ํ๋ฆ„ ๊ด€๋ฆฌ

  • ์ฃผ๋ฌธ ์ด๋ ฅ ๋ฐ ํ†ต๊ณ„ ์ฒ˜๋ฆฌ

์ด๋Ÿฌํ•œ โ€˜์ฃผ๋ฌธ ํ๋ฆ„โ€™์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•ด๋ณธ ๊ฒฝํ—˜์€
๋‹จ์ˆœ CRUD๊ฐ€ ์•„๋‹Œ "์ง„์งœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ค‘์š”ํ•œ ๋””๋”ค๋Œ์ด ๋ฉ๋‹ˆ๋‹ค.


์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด '์ฃผ๋ฌธ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ธฐ'๋ฅผ ๋งˆ์Šคํ„ฐ ํ•˜์„ธ์š”.

Java ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋‚ ๊ฐœ๋ฅผ ๋‹ฌ์•„์ค„๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงฑ ๊ฐ•์˜ ํŠน์ง•

  • ํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜ ์‹ค์Šต ์ค‘์‹ฌ:
    ๋‹จ์ˆœ ๋”ฐ๋ผํ•˜๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ˆ˜๊ฐ•์ƒ์ด ๋จผ์ € ๊ณ ๋ฏผํ•˜๊ณ  ๊ตฌํ˜„ํ•ด ๋ณด๋Š” ์‹ค์Šต ์ค‘์‹ฌ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.

  • ์‚ฌ์ „ ํ•™์Šต โ†’ ์ง์ ‘ ๊ตฌํ˜„ โ†’ ๊ตฌํ˜„ ์„ค๋ช… ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰:
    ๊ฐ•์˜์—์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์ด ์žˆ์œผ๋ฉด ๋ณ„๋„ ์ˆ˜์—…์œผ๋กœ ๊ฐœ๋…์„ ๋จผ์ € ์งš๊ณ ,
    ์ˆ˜๊ฐ•์ƒ์ด ๋จผ์ € ๊ตฌํ˜„ํ•œ ๋’ค, ๊ฐ•์‚ฌ ๋ฒ„์ „์˜ ์ฝ”๋“œ์™€ ์„ค๋ช…์œผ๋กœ ๋น„๊ต ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  • ์‹ค๋ฌด ์ง€ํ–ฅ ์„ค๊ณ„:
    ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„๋ถ€ํ„ฐ ๊ตฌ์กฐํ™”, ๊ตฌํ˜„, ํ…Œ์ŠคํŠธ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ์‹ค๋ฌด ํ๋ฆ„์— ๋งž๊ฒŒ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

โœจ ์ˆ˜๊ฐ• ํ›„ ์„ฑ์žฅ ํฌ์ธํŠธ

  • Java + Spring Core๋กœ ๊ตฌ์„ฑ๋œ ๋„๋ฉ”์ธ ์œ„์ฃผ์˜ ์‚ฌ๊ณ ๋ ฅ ํ–ฅ์ƒ์„ ํ†ตํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„ ๊ฒฝํ—˜ ํ™•๋ณด

  • ๊ตฌํ˜„๋ ฅ/์„ค๊ณ„๋ ฅ ํ–ฅ์ƒ์„ ํ†ตํ•œ ๋ฐฑ์—”๋“œ ์‹ค๋ฌด ๊ฐ๊ฐ ์ตํžˆ๊ธฐ

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ฒด๋ ฅ ๊ฐ•ํ™”

  • ๋‹จ์ˆœ ๋ฌธ๋ฒ•์ด ์•„๋‹Œ ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ž์‹ ๊ฐ ํš๋“

๐Ÿ‘€[ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ] ์„ค๊ณ„๋ถ€ํ„ฐ ๊ตฌํ˜„๊นŒ์ง€

๐ŸŽฌ '์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ๋‹จ๊ณ„' ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ


๐ŸŽฌ '์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ ๋‹จ๊ณ„' ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ

๐ŸŽฌ '๋ ˆ์ด์–ด ๋ณ„ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์žก๊ธฐ' ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ

๐ŸŽฌ '์†๋‹˜ ๋ชจ๋“œ ๋ ˆ์ด์–ด๋ณ„ ๋กœ์ง ๊ตฌํ˜„' ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ

๐ŸŽฌ '์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง' ํ•˜์ผ๋ผ์ดํŠธ ์˜์ƒ

๐Ÿงฐ ์‚ฌ์šฉ ๊ธฐ์ˆ  ์Šคํƒ

  • Java 17+

  • Spring Framework Core

  • Spring JdbcClient

  • H2 In-Memory Database

  • JUnit ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

  • Domain-Driven Design (DDD) ๊ธฐ๋ฐ˜ ์„ค๊ณ„

  • ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ

๐Ÿ‘จโ€๐Ÿซ ์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœ๋“œ๋ ค์š”

  • Java ๋ฌธ๋ฒ•์€ ์•Œ์ง€๋งŒ ์‹ค์ „ ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„์—๋Š” ์ž์‹  ์—†๋Š” ๋ถ„

  • Spring Core๋ฅผ ํ•™์Šตํ–ˆ์ง€๋งŒ ์ง์ ‘ ์‘์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ๋ถ„

  • ์ฝ˜์†” ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ ๋Œ์•„๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„

  • Java ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๊ธฐ์ดˆ๋ฅผ ํƒ„ํƒ„ํžˆ ๋‹ค์ง€๊ณ  ์‹ถ์€ ๋ถ„

  • 1๋ถ€ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ  ๋” ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ๊ตฌํ˜„์„ ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„

โค๏ธ ๊ฐ•์‚ฌ์˜ ์ง„์‹ฌ

์ด ๊ฐ•์˜๋Š” ๋‹จ์ˆœํžˆ โ€˜์ฝ”๋“œ ๋”ฐ๋ผ์น˜๊ธฐโ€™์—์„œ ๋ฒ—์–ด๋‚˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋‚˜๋งŒ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™„์„ฑํ•˜๋Š” ๊ฒฝํ—˜์„ ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋ฆฌ ์ข‹์€ ๊ธฐ์ˆ ์ด๋ผ๋„ ๋‚˜ ์Šค์Šค๋กœ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด 'ํ™”๋ คํ•œ ๋ถˆ๊ฝƒ ์ถ•์ œ๋ฅผ ๋„‹์„ ์žƒ๊ณ  ๋ฐ”๋ผ๋งŒ ๋ณผ๋ฟ ๊ฐ๋™์ ์ธ ๊ทธ ๋А๋‚Œ์„ ๋ฐ–์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š”๊ฒƒ'๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”.


์ฝ”๋“œ๋ฅผ ์ณ๋‹ค๋งŒ ๋ณด๊ณ  ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹ค๋ฌด์—์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค ์Šค์Šค๋กœ โ€˜์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒโ€™์ด ๋˜๊ธฐ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋๊นŒ์ง€ ๋„์™€๋“œ๋ฆด๊ฒŒ์š”.

Java ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ฟˆ์„ ํฌ๊ธฐํ•˜์ง€ ๋งˆ์‹œ๊ณ , ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ตœ์„ ์„ ๋‹คํ•ด ๊ผญ ๊ฐœ๋ฐœ์ž๋กœ ์ž…๋ฌธํ•  ์ˆ˜ ์žˆ๊ธธ ๊ธฐ์›ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

โœ… ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‚˜์š”?

Q. 1๋ถ€ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์ด ๊ฐ•์˜๋งŒ ๋“ค์–ด๋„ ๊ดœ์ฐฎ์„๊นŒ์š”?

๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

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

Q. JdbcClient๋Š” ์ฒ˜์Œ ๋“ค์–ด๋ณด๋Š”๋ฐ ์–ด๋ ต์ง€ ์•Š๋‚˜์š”?
JdbcClient๋Š” Spring 6.1๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ๋„์ž…๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ๊ธฐ์กด JdbcTemplate๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ , ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.

๊ฐ•์˜์—์„œ ์‚ฌ์šฉ๋ฒ•์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…๋“œ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

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

๊ตฌํ˜„ํ•ด ๋ณด์‹œ๋ฉด ์•„์‹œ๊ฒ ์ง€๋งŒ ์ƒ๊ฐ๋งŒํผ ๊ทธ๋ฆฌ ๋‹จ์ˆœํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Q. ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํŠธํด๋ฆฌ์˜ค๋กœ ํ™œ์šฉํ•ด๋„ ๋ ๊นŒ์š”?
๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค.

์ฃผ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ์€ ์›น ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—์„œ ํ”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ชฝ ๋„๋ฉ”์ธ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํŽธํ•œ UI๋ฅผ ๊ฐ€์ง€๋Š” ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ์„ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•˜๋ฉด "Java์˜ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ œ๋Œ€๋กœ ๊ฐ–์ถ”๊ธฐ ์œ„ํ•ด ํ•™์Šต์„ ์ œ๋Œ€๋กœ ํ–ˆ๊ตฌ๋‚˜" ๋ผ๋Š” ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ์šด์˜ ์ฒด์ œ ๋ฐ ๋ฒ„์ „(OS)

    • PC ํ™˜๊ฒฝ์˜ OS๋ผ๋ฉด ์–ด๋–ค OS๋“  ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.

    • ๋‹ค๋งŒ JDK 17 ์ด์ƒ์ด ์„ค์น˜ ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ, IntelliJ IDE๊ฐ€ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋ฌด๋ฆฌ ์—†์„ ์ •๋„์˜ ์ปดํ“จํŒ… ํŒŒ์›Œ(CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ)๋ฅผ ๊ฐ–์ถ”๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ๋„๊ตฌ

    • JDK 17(์ตœ์†Œ ์‚ฌ์–‘)

    • IntelliJ IDE

      • ๊ฐ•์˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” IntelliJ IDE๋Š” Ultimate ๋ฒ„์ „์ด์ง€๋งŒ ๋ฌด๋ฃŒ ๋ฒ„์ „์ธ Community ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์…”๋„ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

      • IntelliJ IDE๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ž˜ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ ํŽธ์ง‘ ํˆด(Visual Studio Code ๋“ฑ)์ด ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

    • Spring Boot 3.x ์ด์ƒ

      • ๊ฐ•์˜์—์„œ๋Š” Spring Boot 3.4.4 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Spring 3.x ๋ฒ„์ „์ด๋ฉด ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋Š”๋ฐ ๋ฌธ์ œ์—†์Šต๋‹ˆ๋‹ค.

    • Gradle 7.3(์ตœ์†Œ ์‚ฌ์–‘) ์ด์ƒ

      • JDK 17์— ํ˜ธํ™˜๋˜๋Š” Gralde ๋ฒ„์ „์ด 7.3์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ์‚ฌ์ด์˜ ๋ฒ„์ „์„ ๋งž์ถ”์–ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

      • ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด Java Compatibility๋ฅผ ์ฐธ๊ณ ํ•˜์…”์„œ ๊ฐ€๊ธ‰์  ๋ฒ„์ „์„ ๋งž์ถฐ์ฃผ์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • JUnit 5(์ตœ์†Œ ์‚ฌ์–‘) ์ด์ƒ

ํ•™์Šต ์ž๋ฃŒ

์œ ์˜์‚ฌํ•ญ

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

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Java ๋ฌธ๋ฒ•์€ ์ตํ˜”์ง€๋งŒ, ์‹ค์ „ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณธ ๊ฒฝํ—˜์ด ์—†๋Š” ๋ถ„

  • Spring Core ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์•Œ์ง€๋งŒ, ์ง์ ‘ ์ ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ๋ถ„

  • ์‹ค๋ฌด์ฒ˜๋Ÿผ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ถ„์„ํ•˜๊ณ  ์„ค๊ณ„๋ถ€ํ„ฐ ๊ตฌํ˜„๊นŒ์ง€ ์ „์ฒด ํ๋ฆ„์„ ๊ฒฝํ—˜ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๋ถ„

  • ๋‹จ์ˆœ CRUD๋ฅผ ๋„˜์–ด ์ƒํƒœ ๋ณ€ํ™”์™€ ๋„๋ฉ”์ธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๋กœ์ง์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„

  • 1๋ถ€ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ , ๋” ๋ณต์žกํ•œ ๊ตฌ์กฐ์™€ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ „, ์ฝ˜์†” ํ”„๋กœ์ ํŠธ๋กœ ๊ธฐ์ดˆ ์ฒด๋ ฅ์„ ๋‹ค์ง€๊ณ  ์‹ถ์€ ๋ถ„

  • ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ โ€œ์ด ์ฝ”๋“œ๋Š” ์™œ ์ด๋ ‡๊ฒŒ ์งฐ์„๊นŒ?โ€๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ์‹ถ์€ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java ๋ฌธ๋ฒ•๊ณผ OOP ๊ธฐ๋ณธ ๊ฐœ๋…

  • Spring Core ์‚ฌ์šฉ ๊ฒฝํ—˜ (Bean ๋“ฑ๋ก, DI ๋“ฑ)

  • JDBC ๋˜๋Š” SQL ๊ธฐ๋ณธ ๊ฐœ๋…

  • ๊ฐ„๋‹จํ•œ ์ฝ˜์†” ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„ ๊ฒฝํ—˜

์•ˆ๋…•ํ•˜์„ธ์š”
Kevin์ž…๋‹ˆ๋‹ค.

6,675

๋ช…

์ˆ˜๊ฐ•์ƒ

281

๊ฐœ

์ˆ˜๊ฐ•ํ‰

124

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

11

๊ฐœ

๊ฐ•์˜

  • ์ฃผ๋ ฅ ์–ธ์–ด ๋˜๋Š” ๊ธฐ์ˆ  : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

  • (์ฃผ) ํŽœํƒ€์‹œํ๋ฆฌํ‹ฐ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ํ™œ๋™(From 2015.07 To 2022.01)

  • (์ฃผ)์ฝ”๋“œ์Šคํ…Œ์ด์ธ (https://www.codestates.com)์—์„œ Senior Educational Software Engineer(Backend)๋กœ ํ™œ๋™
    (From 2022.03 To 2024.01.31)

- ํ”„๋ฆฌ๋žœ์„œ ๊ฐœ๋ฐœ์ž ๋ฐ ๊ฐ•์‚ฌ๋กœ ํ™œ๋™(Since 2024.02)

- ์ €์„œ

์•ˆ๋…•ํ•˜์„ธ์š”? Kevin์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ^^

์ธํ”„๋Ÿฐ์—์„œ ์ด๋ ‡๊ฒŒ ๊ฐ•์‚ฌ๋กœ์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์„ ๋งŒ๋‚˜๊ฒŒ ๋˜์–ด์„œ ๋„ˆ๋ฌด ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค.

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

์ œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ง€์‹๊ณผ ๊ฒฝํ—˜์ด ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ์ธํ”„๋Ÿฐ์—์„œ ๊ฐ•์ขŒ๋ฅผ ์‹œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์—๊ฒŒ ํ˜„์‹ค์ ์œผ๋กœ ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ๊ฐ•์ขŒ๋กœ ๊พธ์ค€ํžˆ ์ฐพ์•„๋ต™๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ์ด๋‚˜ ์˜๊ฒฌ์€ ์–ธ์ œ๋“ ์ง€ ํ™˜์˜ํ•˜๋‹ˆ, ์ด๋ฉ”์ผ(it.village.host@gmail.com)๋กœ ํŽธํ•˜๊ฒŒ ์–˜๊ธฐํ•ด์ฃผ์„ธ์š”.

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

45๊ฐœ โˆ™ (10์‹œ๊ฐ„ 35๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

2๊ฐœ

5.0

2๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • ์ ค๋‹ค๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์ ค๋‹ค

    ์ˆ˜๊ฐ•ํ‰ 17

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    • ADK123๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ADK123

      ์ˆ˜๊ฐ•ํ‰ 330

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      10% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      Kevin๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

      ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ๋น„์Šทํ•œ ๊ฐ•์˜

      ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ์‹ ๊ทœ๊ฐ€์ž… 25% ํ• ์ธ

      โ‚ฉ41,250

      25%

      โ‚ฉ55,000