ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ’กJPA๋ž€?

  • Java Persistence API
  • ์ž๋ฐ” ์ง„์˜์˜ ORM ๊ธฐ์ˆ  ํ‘œ์ค€

๐Ÿ’ป  ORM์ด๋ž€?

  • Object-relational mapping(๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘)
  • ๊ฐ์ฒด๋Š” ๊ฐ์ฒด๋Œ€๋กœ ์„ค๊ณ„ํ•˜๊ณ , ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Œ€๋กœ ์„ค๊ณ„ํ•˜๋ฉด,
  • ORM ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ค‘๊ฐ„์—์„œ ๋งคํ•‘ํ•ด์ค€๋‹ค.
  • ๋Œ€์ค‘์ ์ธ ์–ธ์–ด์—๋Š” ๋Œ€๋ถ€๋ถ„ ORM ๊ธฐ์ˆ ์ด ์กด์žฌํ•œ๋‹ค.

๐Ÿ’ป  JPA ๋™์ž‘ ๋ฐฉ์‹

JPA๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ JDBC ์‚ฌ์ด์—์„œ ๋™์ž‘ํ•œ๋‹ค.

JPA์˜ ๋™์ž‘ ๊ณผ์ •

  1. Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ํ˜ธ์ถœ: Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JPA API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  2. JPA์˜ ์ฒ˜๋ฆฌ: JPA๋Š” ์ด ์š”์ฒญ์„ ๋ฐ›์•„ ๋‚ด๋ถ€์ ์œผ๋กœ JDBC API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  3. JDBC๋ฅผ ํ†ตํ•œ SQL ์‹คํ–‰: JDBC๋Š” ํ•„์š”ํ•œ SQL์„ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜: ์‹คํ–‰๋œ SQL์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋œ๋‹ค.

JPA ๋™์ž‘ - ์ €์žฅ

  1. ๋ฉค๋ฒ„ ๊ฐ์ฒด๋ฅผ ๋ฉค๋ฒ„ DAO์— ๋„˜๊ธด๋‹ค.
  2. ๋ฉค๋ฒ„ DAO๊ฐ€ ๋ฉค๋ฒ„ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•ด๋‹ฌ๋ผ๊ณ  JPA์—๊ฒŒ ๋ฉค๋ฒ„ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋˜์ง„๋‹ค.
  3. JPA๊ฐ€ ์•Œ์•„์„œ ๋ฉค๋ฒ„ ๊ฐ์ฒด๋ฅผ ๋ถ„์„ํ•œ๋‹ค. (INSERT SQL ์ƒ์„ฑ, ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ ๋“ฑ...)
  4. JDBC API๊ฐ€ DB์— INSERT ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฐ๋‹ค.

  • JPA ๋™์ž‘ - ์กฐํšŒ
    1. JPA์— ๋ฉค๋ฒ„ ์•„์ด๋””๋ฅผ ๋˜์ง„๋‹ค. ('find(id)' ๋ฉ”์„œ๋“œ๋Š” JPA์—๊ฒŒ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์ž‘์—…์„ ์š”์ฒญํ•œ๋‹ค.)
    2. JPA๋Š” ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ SELECT SQL ๋ฌธ์„ ์ƒ์„ฑํ•œ๋‹ค.
    3. JDBC API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด SQL ๋ฌธ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „์†กํ•œ๋‹ค.
    4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” SQL ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ResultSet ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    5. JPA๋Š” ResultSet์„ ๋ฐ›์•„ Java์˜ Entity Object (์—ฌ๊ธฐ์„œ๋Š” ๋ฉค๋ฒ„ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด)๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

JPA์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ญํ• ์€ ๋ฐ”๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ์ธ๋ฐ, ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://programming-tree.tistory.com/108 ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.^^

 

๐Ÿ’ป JPA ๊ตฌํ˜„์ฒด

JPA๋Š” Java ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ API ํ‘œ์ค€ ๋ช…์„ธ๋กœ, ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌํ˜„์ฒด๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ(Hibernate) ์ด๋‹ค.

๐Ÿ’ป JPA๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

  • SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ
  • ์ƒ์‚ฐ์„ฑ: JPA๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ SQL์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.

  • ์œ ์ง€๋ณด์ˆ˜: ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ์ฝ”๋“œ๋กœ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๊ธฐ์กด์—๋Š” ํ•„๋“œ ๋ณ€๊ฒฝ์‹œ ๋ชจ๋“  SQL์„ ์ˆ˜์ •ํ•ด์•ผ ํ–ˆ์ง€๋งŒ, JPA๋ฅผ ํ†ตํ•ด ํ•„๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด SQL์€ JPA๊ฐ€ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

  • ์„ฑ๋Šฅ: ์บ์‹œ์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ถ”์ƒํ™”์™€ ๋ฒค๋” ๋…๋ฆฝ์„ฑ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ๋„์™€์ค€๋‹ค.
  • ํ‘œ์ค€: JPA๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ‘œ์ค€์„ ์ œ๊ณตํ•œ๋‹ค.