Why JPA?
Persistence Mechanisms
Java Objects
Yes
No
Yes
Yes
Yes
Yes
Yes
Advanced OO Concepts
Yes
No
Yes
Yes
No
Yes
Yes
Transactional Integrity
No
Yes
Yes
Yes
Yes
Yes
Yes
Concurrency
No
Yes
Yes
Yes
Yes
Yes
Yes
Large Data Sets
No
Yes
Yes
Yes
Yes
Yes
Yes
Existing Schema
No
Yes
Yes
No
Yes
Yes
Yes
Relational and Non-Relational Stores
No
No
No
No
Yes
Yes
No
Queries
No
Yes
Yes
Yes
Yes
Yes
Yes
Strict Standards / Portability
Yes
No
No
No
Yes
Yes
Yes
Simplicity
Yes
Yes
Yes
Yes
No
Yes
Yes
Serializationμ κ°μ²΄ κ·Έλνλ₯Ό λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘νκ±°λ νμΌμ μ μ₯ν μ μλ μΌλ ¨μ λ°μ΄νΈλ‘ λ³ννκΈ° μν Javaμ κΈ°λ³Έ λ©μ»€λμ¦μ λλ€. μ§λ ¬νλ μ¬μ©νκΈ° λ§€μ° μ½μ§λ§ λ§€μ° μ νμ μ λλ€. μ 체 κ°μ²΄ κ·Έλνλ₯Ό ν λ²μ μ μ₯νκ³ κ²μν΄μΌ νλ―λ‘ λ§μ μμ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° μ ν©νμ§ μμ΅λλ€. μ 보λ₯Ό μ λ°μ΄νΈνλ λμ μ€λ₯κ° λ°μνλ©΄ κ°μ²΄μ μ μ©λ λ³κ²½ μ¬νμ μ·¨μν μ μμΌλ―λ‘ μ격ν λ°μ΄ν° 무결μ±μ΄ μꡬλλ μμ© νλ‘κ·Έλ¨μ μ ν©νμ§ μμ΅λλ€. μ¬λ¬ μ€λ λ λλ νλ‘κ·Έλ¨μ μλ‘ μΆ©λνμ§ μκ³ λμΌν μ§λ ¬νλ λ°μ΄ν°λ₯Ό λμμ μ½κ³ μΈ μ μμ΅λλ€. 쿼리 κΈ°λ₯μ μ 곡νμ§ μμ΅λλ€. μ΄λ¬ν λͺ¨λ μμΈμΌλ‘ μΈν΄ μ§λ ¬νλ κ°μ₯ μ¬μν μ§μμ± μꡬ μ¬νμ μ μΈνκ³ λ λͺ¨λ μΈλͺ¨κ° μμ΅λλ€.
λ§μ κ°λ°μκ° JDBC(Java Database Connectivity) APIλ₯Ό μ¬μ©νμ¬ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ μꡬ λ°μ΄ν°λ₯Ό μ‘°μν©λλ€. JDBCλ λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μκ³ , λ°μ΄ν° 무결μ±μ 보μ₯νλ λ©μ»€λμ¦μ΄ μμΌλ©°, μ 보μ λν λμ μ‘μΈμ€λ₯Ό μ§μνκ³ , SQLμ μ κ΅ν 쿼리 μΈμ΄κ° μλ λ± μ§λ ¬νμ λ¨μ μ λλΆλΆ 극볡ν©λλ€. JDBCμμ μ¬μ©νλ κ΄κ³ν ν¨λ¬λ€μμ κ°μ²΄λ₯Ό μ μ₯νλλ‘ μ€κ³λμ§ μμμΌλ―λ‘ μꡬ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μ½λ λΆλΆμ λν κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ν¬κΈ°νκ±°λ μμκ³Ό κ°μ κ°μ²΄ μ§ν₯ κ°λ μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ μ§μ λ§€ννλ λ°©λ²μ μ°Ύλ κ²μ λλ€.
κ°μ²΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ κ°μ λ§€νμ μνν μ μλ νμ€ μννΈμ¨μ΄ μ νμ΄ λ§μ΄ μμ΅λλ€. μ΄λ¬ν ORM(κ°μ²΄ κ΄κ³ν λ§€ν) νλ μμν¬λ₯Ό μ¬μ©νλ©΄ κ°μ²΄ λͺ¨λΈμ μ§μ€ν μ μμΌλ©° κ°μ²΄ μ§ν₯ ν¨λ¬λ€μκ³Ό κ΄κ³ν ν¨λ¬λ€μ κ°μ λΆμΌμΉμ λν΄ κ±±μ ν νμκ° μμ΅λλ€. μνκΉκ²λ μ΄λ¬ν κ° μ νμλ κ³ μ ν API μ§ν©μ΄ μμ΅λλ€.μ°λ¦¬μ μ½λλ λ¨μΌ 곡κΈμ 체μ νΉμ μΈν°νμ΄μ€μ μ°κ²°λ©λλ€. 곡κΈμ μ²΄κ° κ°κ²©μ μΈμνκ±°λ λμ λλ λ²κ·Έλ₯Ό μμ νμ§ λͺ»νκ±°λ κΈ°λ₯μ΄ λ€μ²μ§λ κ²½μ° λͺ¨λ μ§μμ± μ½λλ₯Ό λ€μ μμ±νμ§ μκ³ λ λ€λ₯Έ μ νμΌλ‘ μ νν μ μμ΅λλ€. μ΄λ₯Ό λ²€λ λ½μΈ(Lock-in)μ΄λΌκ³ ν©λλ€.
κ°μ²΄λ₯Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ λ§€ννλ λμ μΌλΆ μννΈμ¨μ΄ νμ¬μμλ κ°μ²΄λ₯Ό μ μ₯νλλ‘ νΉλ³ν μ€κ³λ λ°μ΄ν°λ² μ΄μ€ νμμ κ°λ°νμ΅λλ€. μ΄λ¬ν κ°μ²΄ λ°μ΄ν°λ² μ΄μ€(ODB)λ μ’ μ’ κ°μ²΄-κ΄κ³ν λ§€ν μννΈμ¨μ΄λ³΄λ€ ν¨μ¬ μ¬μ©νκΈ° μ½μ΅λλ€. κ°μ²΄ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ κ·Έλ£Ή(ODMG)μ κ°μ²΄ λ°μ΄ν°λ² μ΄μ€μ μ‘μΈμ€νκΈ° μν νμ€ APIλ₯Ό λ§λ€κΈ° μν΄ κ΅¬μ±λμμ΅λλ€. κ·Έλ¬λ ODMGμ κΆμ₯ μ¬νμ μ€μνλ κ°μ²΄ λ°μ΄ν°λ² μ΄μ€ 곡κΈμ 체λ κ±°μ μμ΅λλ€. λ°λΌμ 곡κΈμ 체 μμ‘΄μ κ°μ²΄ λ°μ΄ν°λ² μ΄μ€μλ λ¬Έμ λ₯Ό μΌμΌν΅λλ€. λ° λμ μκΈ°μ λ€μ΄ κ²μ¦λ κ΄κ³ν μμ€ν μμ μλμ μΌλ‘ μ μλ €μ§μ§ μμ κ°μ²΄ λ°μ΄ν°λ² μ΄μ€ κΈ°μ λ‘ μ ννλ κ²μ μ£Όμ νκ³ μμ΅λλ€. κ°μ²΄ λ°μ΄ν°λ² μ΄μ€ μμ€ν μ μ¬μ©ν μ μλ λ°μ΄ν° λΆμ λκ΅¬κ° μ κ³ μ€λλ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ μ΄λ―Έ λ°©λν μμ λ°μ΄ν°κ° μ μ₯λμ΄ μμ΅λλ€. μ΄λ¬ν λͺ¨λ μ΄μ μ κΈ°ν μ΄μ μΌλ‘ μΈν΄ κ°μ²΄ λ°μ΄ν°λ² μ΄μ€λ κΈ°λν λ§νΌ μΈκΈ°λ₯Ό μ»μ§ λͺ»νμ΅λλ€.
Java νλ«νΌμ Enterprise Editionμ μν°ν° EJBs(Enterprise Java Beans)λ₯Ό λμ νμ΅λλ€. EJB 2.x μν°ν°λ λ°μ΄ν° μ μ₯μμ μꡬ μ 보λ₯Ό λνλ΄λ κ΅¬μ± μμμ λλ€. κ°μ²΄ κ΄κ³ν λ§€ν μ루μ κ³Ό λ§μ°¬κ°μ§λ‘ EJB 2.x μν°ν°λ μꡬ λ°μ΄ν°μ κ°μ²΄ μ§ν₯ viewλ₯Ό μ 곡ν©λλ€. κ·Έλ¬λ κ°μ²΄ κ΄κ³ν μννΈμ¨μ΄μ λ¬λ¦¬ EJB 2.x μν°ν°λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ‘ μ νλμ§ μμ΅λλ€. μ΄λ€μ΄ λνλ΄λ μꡬ μ 보λ EIS(Enterprise Information System) λλ κΈ°ν μ μ₯ μ₯μΉμμ κ°μ Έμ¬ μ μμ΅λλ€. λν EJB 2.x μν°ν°λ μ격ν νμ€μ μ¬μ©νλ―λ‘ κ³΅κΈμ 체 κ°μ μ΄μν μ μμ΅λλ€. λΆννκ²λ EJB 2.x νμ€μ ννν μ μλ κ°μ²΄ μ§ν₯ κ°λ μ λ€μ μ νμ΄ μμ΅λλ€. μμ, λ€νμ± λ° λ³΅μ‘ν κ΄κ³μ κ°μ κ³ κΈ κΈ°λ₯μ΄ μμ΅λλ€. λν EBJ 2.x μν°ν°λ μ½λ©νκΈ° μ΄λ €μ°λ©° μ€ννλ €λ©΄ 무κ²κ³ μ’ μ’ κ°λΉμΌ μ ν리μΌμ΄μ μλ²κ° νμν©λλ€
JDO μ¬μμ JPAμ λλλλ‘ μ μ¬ν APIλ₯Ό μ¬μ©ν©λλ€. κ·Έλ¬λ JDOλ λΉκ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μνλ©° μΌλΆμμλ μ΄ κΈ°λ₯μ΄ μ¬μμ ν¬μμν¨λ€κ³ μ£Όμ₯ν©λλ€
JPAλ μμ λμ΄λ κ° μ§μμ± λ©μ»€λμ¦μ μ΅μμ κΈ°λ₯μ κ²°ν©ν©λλ€. JPAμμ μν°ν°λ₯Ό μμ±νλ κ²μ μ§λ ¬ν κ°λ₯ν ν΄λμ€λ₯Ό μμ±νλ κ²λ§νΌ κ°λ¨ν©λλ€. JPAλ JDBCμ λμ©λ λ°μ΄ν° μΈνΈ, λ°μ΄ν° μΌκ΄μ±, λμ μ¬μ© λ° μΏΌλ¦¬ κΈ°λ₯μ μ§μν©λλ€. κ°μ²΄ κ΄κ³ν μννΈμ¨μ΄ λ° κ°μ²΄ λ°μ΄ν°λ² μ΄μ€μ λ§μ°¬κ°μ§λ‘ JPAλ μμκ³Ό κ°μ κ³ κΈ κ°μ²΄ μ§ν₯ κ°λ μ μ¬μ©μ νμ©ν©λλ€. JPAλ JDBCμ λμ©λ λ°μ΄ν° μΈνΈ, λ°μ΄ν° μΌκ΄μ±, λμ μ¬μ© λ° μΏΌλ¦¬ κΈ°λ₯μ μ§μν©λλ€. κ°μ²΄ κ΄κ³ν μννΈμ¨μ΄ λ° κ°μ²΄ λ°μ΄ν°λ² μ΄μ€μ λ§μ°¬κ°μ§λ‘ JPAμμλ μμκ³Ό κ°μ κ³ κΈ κ°μ²΄ μ§ν₯ κ°λ μ μ¬μ©ν μ μμ΅λλ€. JPAλ JDO λ° EJB 2.x μν°ν°μ κ°μ μ격ν μ¬μμ μμ‘΄νμ¬ λ²€λ μ’ μμ λ°©μ§ν©λλ€. JPAλ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ μ€μ μ λ‘λλ€. κ·Έλ¦¬κ³ JDOμ λ§μ°¬κ°μ§λ‘ JPAλ μ¬μ©νκΈ°κ° λ§€μ° μ½μ΅λλ€.
Reference
Last updated
Was this helpful?