JPA(Java Persistence API)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

2020. 6. 23. 11:14ยทLanguages/JAVA

JPA(Java Persistence API)๋Š” ์ž๋ฐ” ORM ๊ธฐ์ˆ  ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.
JPA๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ JDBC ์‚ฌ์ด์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

JPA and the ORM layer

ORM(Object-Relational Mapping)์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งคํ•‘ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

ORM ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•ด์„œ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ๋•Œ, Insert SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๋ฅผ ๋งˆ์น˜ ์ž๋ฐ” ์ปฌ๋ ‰์…˜์— ์ €์žฅํ•˜๋“ฏ์ด ORM ํ”„๋ ˆ์ž„์›Œํฌ์— ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

JPA ์†Œ๊ฐœ

๊ณผ๊ฑฐ ์ž๋ฐ” ๋นˆ์ฆˆ(EJB)๋ผ๋Š” ๊ธฐ์ˆ  ํ‘œ์ค€์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ทธ ์•ˆ์—๋Š” ์—”ํ‹ฐํ‹ฐ ๋นˆ์ด๋ผ๋Š” ORM ๊ธฐ์ˆ ๋„ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ๊ธฐ์ˆ  ์„ฑ์ˆ™๋„๋„ ๋–จ์–ด์กŒ์œผ๋ฉฐ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ(J2EE) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ๋งŒ ๋™์ž‘ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ(Hibernate)๋ผ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉฐ EJB์™€ ๋น„๊ตํ•ด์„œ ๊ฐ€๋ณ๊ณ  ์‹ค์šฉ์ ์ธ ๋ฐ๋‹ค ๊ธฐ์ˆ  ์„ฑ์ˆ™๋„๋„ ๋†’์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์—†์ด๋„ ๋™์ž‘ํ•ด์„œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ EJB 3.0์—์„œ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์ž๋ฐ” ORM ๊ธฐ์ˆ  ํ‘œ์ค€์ด ๋งŒ๋“ค์–ด์กŒ๋Š”๋ฐ ์ด๊ฒƒ์ด ๋ฐ”๋กœ JPA์ž…๋‹ˆ๋‹ค.

 

JPA ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์ฒด

JPA๋Š” ์ž๋ฐ” ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ API ํ‘œ์ค€ ๋ช…์„ธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด JPA๋ฅผ ๊ตฌํ˜„ํ•œ ORM ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • JPA 1.0(JSR 220) 2006๋…„ : ์ดˆ๊ธฐ ๋ฒ„์ „, ๋ณตํ•ฉ ํ‚ค์™€ ์—ฐ๊ด€๊ด€๊ณ„ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • JPA 2.0(JSR 317) 2009๋…„ : ๋Œ€๋ถ€๋ถ„์˜ ORM ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ณ  JPA Criteria๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • JPA 2.1(JSR 338) 2013๋…„ : ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ € ์ ‘๊ทผ, ์ปจ๋ฒ„ํ„ฐ(Converter), ์—”ํ‹ฐํ‹ฐ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • JPA 2.2(JSR 338) 2017๋…„ (์ถœ์ฒ˜ : https://en.wikipedia.org/wiki/Java_Persistence_API#JPA_2.2)

    • Add @Repeatable to all relevant annotations

    • Allow all JPA annotations to be used in meta-annotations.

    • Add ability to stream a query result

    • Allow AttributeConverters to be CDI injectable

    • Support Java 8 Date and Time types

    • DataNucleus (from version 5.1)

    • EclipseLink (from version 2.7)

    • Hibernate (from version 5.3)

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

  • ์ƒ์‚ฐ์„ฑ

  • ์œ ์ง€๋ณด์ˆ˜

  • ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ

  • ์„ฑ๋Šฅ

  • ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ถ”์ƒํ™”์™€ ๋ฒค๋” ๋…๋ฆฝ์„ฑ

  • ํ‘œ์ค€

 

์„ฑ๋Šฅ์ด ๋А๋ฆฌ๋‹ค๋Š” ์˜๊ฒฌ์— ๋Œ€ํ•ด

์ง€๊ธˆ ์‹œ๋Œ€์— ์ž๋ฐ”๊ฐ€ ๋А๋ฆฌ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

JPA๋Š” ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์„œ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉด SQL์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ JPA์˜ ๋„ค์ดํ‹ฐ๋ธŒ SQL ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ SQL์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ : ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ / ๊น€์˜ํ•œ ์ง€์Œ

 

728x90
'Languages/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Java 21 Release
  • 2023๋…„ 3์›” 21์ผ JDK 20์ด ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • zipํŒŒ์ผ ํ•ด์ œ, ๋Œ€์ƒ ํด๋” ๋ณ€๊ฒฝ & ํŒŒ์ผ ์œ„์น˜ ๋ณ€๊ฒฝ
  • [java] ์ฃผ๋ง ์ œ์™ธํ•œ ์ด์ „ 5์ผ ๊ตฌํ•˜๊ธฐ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ธŒ๋ฆฌํ•‘
    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
    ํƒœ๊ตญ
    ํ€˜์ŠคํŠธ
    ์˜ค๋Š˜์˜๋‰ด์Šค
    ๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
JPA(Java Persistence API)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”