JavaRush /Java Blog /Random-KO /์ธํ˜•์„ ์œ„ํ•œ ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ. "Java Persistence API and Hibernate" ์ฑ… ๋ฆฌ...

์ธํ˜•์„ ์œ„ํ•œ ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ. "Java Persistence API and Hibernate" ์ฑ… ๋ฆฌ๋ทฐ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์„ธ๊ณ„์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์ˆ  ๋ฌธํ—Œ์ด ์˜์–ด๋กœ ์ž‘์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋น„๋ฐ€์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Java ๊ฐœ๋ฐœ๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ž๋ฃŒ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด ๋Ÿฌ์‹œ์•„์–ด๋กœ ์ „ํ˜€ ์ œ๊ณต๋˜์ง€ ์•Š๊ฑฐ๋‚˜ Google ๋ฒˆ์—ญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๋ฐฉ์‹์œผ๋กœ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๊ด€ํ•œ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์ฑ…์ธ "Java Persistence API with Hibernate"๊ฐ€ ์•ฝ 6๊ฐœ์›” ์ „์— ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋ฒˆ์—ญ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋Ÿฌ์‹œ์•„์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด Java ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋”์šฑ ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ธํ˜•์„ ์œ„ํ•œ ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ.  ์„œํ‰
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ธ์  ๊ฐ€๋Š” Hibernate ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค . ๋ฌผ๋ก  ๋ชจ๋“  ๊ทœ์น™์—๋Š” ์˜ˆ์™ธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ชจ๋‘ ํŠน์ • ํ”„๋กœ์ ํŠธ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฒฝ๋ ฅ์„ ์‚ดํŽด๋ณด๋ฉด ์‹ค์ œ ์—…๋ฌด์—์„œ ํ™•์‹คํžˆ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณผ์žฅํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์‚ฌ์— ์ œ์‹œ๋œ ์ฑ…์€ ๊ธฐ๋ณธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ž‘์„ฑ๋œ ๋ชจ๋“  ๋‚ด์šฉ ์ค‘์—์„œ Hibernate์— ๋Œ€ํ•œ ์ฃผ์š” ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์‰ฝ๊ฒŒ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ €์ž ์ค‘์—๋Š” Hibernate ํ”„๋กœ์ ํŠธ์˜ ์ฐฝ๋ฆฝ์ž์ธ Gavin King๊ณผ Hibarnate ๊ฐœ๋ฐœ ํŒ€์˜ ๊ตฌ์„ฑ์›์ธ Christian Bauer๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์€ ์ผ์ข…์˜ ํ’ˆ์งˆ ๋ณด์ฆ์ธ ์—ญํ• ์„ ์ฆ‰์‹œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ์ž‘์ž๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ์ˆ ์„ ๋’ค์ง€๋Š” ๋ฐ ๋Šฅ์ˆ™ํ•œ ์‚ฌ๋žŒ :) ๋ฐ˜๋ฉด์— ์ข‹์€ ์ „๋ฌธ๊ฐ€ ๋˜๋Š” ์‹ฌ์ง€์–ด๋Š” ์ œ์ž‘์ž๊ฐ€ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ต์œก ๋„์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ญ๋ผ๊ณ  ๋งํ•˜๋“  ๊ฐœ์ธ์˜ ๊ธฐ์ˆ ๊ณผ ๊ฐ€๋ฅด์น˜๋Š” ๋Šฅ๋ ฅ์€ ์„œ๋กœ ๊ฑฐ์˜ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Knuth์˜ ์ „์„ค์ ์ธ "ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ "์ด๋‚˜ ์ œ์ž‘์ž Bjarne Stroustrup์˜ "C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด"๊ฐ€ ๊ทธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €์ž์˜ ์ตœ๊ณ  ์ˆ˜์ค€์˜ ์ง€์‹์„ ๋ถ€์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ทธ๋“ค์˜ ์ฑ…์€ ๊ฐ€๋ณ๊ฒŒ ๋งํ•˜๋ฉด ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ Hibernate์˜ ์ œ์ž‘์ž์™€ ์ด ์ฑ…์˜ ์ €์ž๋“ค์€ ์ดˆ๋ณด ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ด€์ ์—์„œ ๊ฝค ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ’ˆ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฑ…์€ ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ์ฑ…์ž…๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ์œ ์‚ฌํ•œ ์ฑ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ดˆ๋ก์—๋Š” Hibernate๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋“ค์„ ํฌํ•จํ•˜์—ฌ "๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ" ์ฑ…์ด๋ผ๊ณ  ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ด€๋ จ ๊ธฐ์ˆ ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์ „ ์ค€๋น„๋ฅผ ํ•ด๋‘๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด ์ฑ…์„ ์ฝ์„ ๋•Œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‚ถ์„ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค„ ๊ฒƒ๋“ค์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
  1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๋ฉด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์—†๊ณ  ๊ฐ„๋‹จํ•œ SELECT ์ฟผ๋ฆฌ ๋“ฑ์„ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. - ์ด๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๊ฒƒ์€ JavaRush ์ธํ„ด์‹ญ์— ์ฐธ์—ฌํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. SQL๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์ค‘์— ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์„ธ์š”. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ํ›Œ๋ฅญํ•œ Head-First๊ฐ€ SQL๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (์ œ ์ทจํ–ฅ์œผ๋กœ๋Š” ์ „์ฒด ์‹œ๋ฆฌ์ฆˆ ์ค‘ ์ตœ๊ณ ์˜ HeadFirst ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค).

  2. JDBC . ์ด ๊ธฐ์ˆ ์€ ์ƒˆ๋กœ์šด ๊ฒƒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์ง€๋งŒ ๊ฒฝํ—˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Hibernate๋ณด๋‹ค ์ด ๊ธฐ์ˆ ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ทธ๋Ÿฐ ๋‹ค์Œ ORM์ด ๋ฌด์—‡์ธ์ง€, ์™œ ํ•„์š”ํ•œ์ง€ ์— ๋Œ€ํ•ด (์ ์–ด๋„ ํ‘œ๋ฉด์ ์œผ๋กœ๋Š”) ์ฝ์–ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค . ๊ฒฐ๊ตญ, Hibernate๋Š” ๋ฌด์—‡๋ณด๋‹ค๋„ ORM, ์ฆ‰ Java ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ์ฝ”๋“œ๋กœ (๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ) ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด User ํด๋ž˜์Šค, Auto ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ  ๊ฐ User์—๋Š” ์ž๋™์ฐจ ๋ชฉ๋ก<Auto> ์ž๋™์ฐจ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜๋„๋ก ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒฐ๊ตญ, ์‚ฌ์šฉ์ž๋Š” ํ•œ ๋ช…์ด์ง€๋งŒ ๊ทธ๋Š” ๋งŽ์€ ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค./ ์‚ฌ์šฉ์ž๋ฅผ ์ง์ ‘ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ(์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ "๊ณ ์•„" ์ปดํ“จํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

  4. ๋˜ํ•œ Java์—๋Š” ์ž์ฒด ORM ๋ชจ๋ธ ๊ตฌํ˜„( Java Persistence API ๋˜๋Š” ๊ฐ„๋‹จํžˆ JPA)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์—์„œ๋„ ๋‹ค๋ฃจ์ง€๋งŒ ๋จผ์ € ํ›‘์–ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฃผ์ œ์— ๋Œ€ํ•œ ์ˆ˜๋งŽ์€ ๋ฌธํ—Œ์„ ์ฝ์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. POJO, ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์—”ํ„ฐํ‹ฐ์— ์ ์šฉ๋˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ฌด์—‡์ธ์ง€ ์•ˆ๋‹ค๋ฉด ๊ฝค ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  5. XML ํ˜•์‹ ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ด ์ฑ…์„ ์ฝ๊ธฐ ์ „์— ๋จผ์ € ์ต์ˆ™ํ•ด์งˆ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์ž์ฃผ, Hibernate(Spring๋„ ํฌํ•จ) ๊ตฌ์„ฑ ํŒŒ์ผ์€ XML ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜๋ฉฐ, ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์„ ๊ฒ๋‚˜๊ฒŒ ํ•œ๋‹ค๋ฉด ์ฑ…์„ ์ฝ๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  6. ๋””์ž์ธ ํŒจํ„ด(์ ์–ด๋„ JavaRush ์ž‘์—…์„ ํ†ตํ•ด)์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด DAO ํŒจํ„ด ๊ณผ ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DAO๋Š” Hibernate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ธํ„ด์‹ญ ์ฐธ๊ฐ€์ž๋Š” ํ…Œ์ŠคํŠธ ์ž‘์—…์„ ์ž‘์„ฑํ•  ๋•Œ(๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ์ž์ฒด์—์„œ๋„) "daos"๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์ž‘์—…์—์„œ๋Š” ์ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ผ์ƒ์ ์ธ ์ž‘์—…์ด๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

  • ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด .

๋งˆ์ด๋„ˆ์Šค ์ค‘์—์„œ ์˜ˆ๋งŒ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋…์ž์—๊ฒŒ ์ฃผ์–ด์ง„ ์ƒˆ๋กœ์šด ์ •๋ณด์˜ ์–‘์„ ๊ณ ๋ คํ•˜๋ฉด ์ดˆ๋ณด์ž๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ์กฐ์ฐจ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ GitHub์—์„œ ์˜ˆ์ œ๋ฅผ ๋ณต์ œํ•˜์ง€ ๋ง๊ณ  ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , ๋‹น์‹ ์˜ ์ดํ•ด๋Š” ํ›จ์”ฌ ๋” ์ข‹์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์žฅ์„ ์ฝ์€ ํ›„ ์ง์ ‘ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ƒ๊ฐํ•ด ๋‚ด๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋”๋ผ๋„ ์ด๋Š” ํ›จ์”ฌ ๋” ์ƒ์‚ฐ์ ์ž…๋‹ˆ๋‹ค. ์ฑ…์„ ์‚ฌ๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‚˜์š”? ๋ถ„๋ช…ํ•˜๊ฒŒ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐœํ–‰ ๋ถ€์ˆ˜๋Š” 200๋ถ€๋ฐ–์— ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :) ์ด ์ฑ…์˜ ์ž๋ฃŒ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ €๋Š” Habrahabr์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ๊ธฐ์‚ฌ๋ฅผ ์•„์ฃผ ์‰ฝ๊ฒŒ ์ผ์Šต๋‹ˆ๋‹ค . ์ œ ์ƒ๊ฐ์—๋Š” JavaRush ๊ด€๋ฆฌํŒ€์ด ์ด๋ฅผ ๊ฒฝ์Ÿ ์ƒํ’ˆ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :) ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ํ•™์—…์— ํ–‰์šด์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION