๐Ÿงฒ JPA - ๊ฐ์ฒด์ง€ํ–ฅ vs ๊ด€๊ณ„ํ˜• DB

๊น€์ง€์œคยท2024๋…„ 1์›” 10์ผ
0

JPA

๋ชฉ๋ก ๋ณด๊ธฐ
4/4

JAVA๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ, DB์— ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
JAVA๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๊ณ , DB๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ธฐ์ˆ  ์‚ฌ์ด์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋ถˆ์ผ์น˜ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ JAVA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ DB๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ORM ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•œ๋‹ค.



โ“ORM์ด๋ž€?

Object Relational Mapping์˜ ์•ฝ์ž๋กœ, ๊ฐ์ฒด๊ณผ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ mapping ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

ORM ๊ธฐ์ˆ ๋กœ JDBC, Mybatis ๋“ฑ์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ์ˆ ๋“ค์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ง์ ‘ ๋งคํ•‘ ์ฝ”๋“œ๋ฅผ ๋‹ค ์ž‘์„ฑํ•ด์ค˜์•ผํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

Mybatis์™€ JPA์˜ ์ฐจ์ด์  :

  • JPA๋Š” ๊ด€๊ณ„ ๋งคํ•‘์„ ํ•  ๋•Œ, JAVA์—์„œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๊ณ , ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • Mybatis๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด JAVA์—์„œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์„ ๋•Œ, ๊ฐ์ฒด์˜ ์•„์ด๋””๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ณ , ๊ฐ์ฒด์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” ์•„์ด๋””๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.



๐ŸŒŸ ์ด๋ถ€๋ถ„์˜ ๋ณต์žก์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JPA๋ผ๋Š” ๊ธฐ์ˆ ์ด ๋‚˜์˜จ๋‹ค. ๐ŸŒŸ

JPA๋Š” JAVA์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ORM ๊ธฐ์ˆ ์ธ๋ฐ, ์ด๊ฒƒ์€ ์›๋ž˜ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ผ๋Š” ๊ธฐ์ˆ ์ด ์žˆ๊ณ , ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ JAVA์— ๋งž๊ฒŒ ์žฌ์ƒ์‚ฐํ•ด ๋‚ธ ๊ธฐ์ˆ ์ด๋‹ค.

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

  • ์žฅ์ 

  1. ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ๋Š” ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ™์€ ์ฐธ์กฐ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ insert๋ฅผ ๋ชจ์•˜๋‹ค๊ฐ€ ํ•œ๋ฒˆ์— ์ฟผ๋ฆฌ๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Œ. DB ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ (Batch insert)
  3. ์ง€์—ฐ๋กœ๋”ฉ์œผ๋กœ ์—ฌ๋Ÿฌํ…Œ์ด๋ธ” ์ค‘ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.



โ›” ์ฃผ์˜์ 

  • A์™€ B๊ฐ€ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„์ผ๋•Œ, DB๋Š” ์™ธ๋ž˜ํ‚ค ํ•˜๋‚˜๋กœ ๋‘˜์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, JAVA์—์„œ๋Š” A์™€ B ๋ชจ๋‘ ์„œ๋กœ์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ๊ทธ๋ ‡๋‹ค๋ฉด JAVA์—์„œ๋Š” ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ฅผ ๋‘๊ฐœ์˜ ํ•„๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๊ณ , DB์—์„œ๋Š” ํ•œ๊ฐœ์˜ ํ•„๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค.
    ์ด๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์€ DB๋ฅผ ์—…๋ฐ์ดํŠธ ์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ, JAVA์˜ ๋‘ ํ•„๋“œ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์—…๋ฐ์ดํŠธ ์‹œ์ผœ์•ผ ํ•˜๋Š”์ง€ ๋‚œ๊ฐํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ทœ์น™์„ ์ •์˜ํ–ˆ๋Š”๋ฐ ๋ฐ”๋กœ ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์€ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋กœ ์ง€์ •ํ•œ๋‹ค.
    ๋“ฑ๋ก์ด๋‚˜ ์ˆ˜์ •์€ ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์„ ๊ฑฐ์ณ์„œ ์ž‘์—…ํ•˜๊ณ , ์ฃผ์ธ์ด ์•„๋‹Œ ๊ฐ์ฒด๋Š” ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฃผ์ธ์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘์„ ๋งŒ๋“ค๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

  • ์ฒ˜์Œ์—” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋งคํ•‘ํ•˜๊ณ , ํ•„์š”์‹œ mapped by๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์„ ์‹œ๋„ํ•œ๋‹ค. (ํ…Œ์ด๋ธ”์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ)

  • ํ•„์š”ํ•˜๋ฉด ์—ฐ๊ด€๊ด€๊ณ„ ํŽธ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•œ๋‹ค.

profile
๊พธ์ค€ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ๊ฐœ๋ฐœ์ž

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