JPA lwn Hibernate
Hampir semua aplikasi perusahaan diperlukan untuk mengakses pangkalan data hubungan dengan kerap. Tetapi masalah yang dihadapi dengan teknologi terdahulu (seperti JDBC) ialah ketidakpadanan impedans (perbezaan antara teknologi berorientasikan objek dan hubungan). Penyelesaian untuk masalah ini telah diperkenalkan melalui pengenalan lapisan abstrak yang dipanggil lapisan Kegigihan, yang merangkum akses pangkalan data daripada logik perniagaan. JPA (Java Persistence API) ialah rangka kerja khusus untuk pengurusan data hubungan (menggunakan lapisan kegigihan) dalam aplikasi Java. Terdapat banyak pelaksanaan vendor JPA yang digunakan dalam komuniti pembangun Java. Hibernate ialah pelaksanaan JPA yang paling popular (DataNucleus, EclipseLink dan OpenJPA adalah beberapa yang lain). Versi JPA terbaharu (JPA 2.0) disokong sepenuhnya oleh Hibernate 3.5, yang dikeluarkan pada Mac 2010.
Apakah itu JPA?
JPA ialah rangka kerja untuk mengurus data hubungan untuk Java. Ia boleh digunakan dengan aplikasi yang menggunakan JSE (Platform Java, Edisi Standard) atau JEE (Platform Java, Edisi Perusahaan). Versi semasanya ialah JPA 2.0, yang dikeluarkan pada 10 Dis 2009. JPA menggantikan kacang entiti EJB 2.0 dan EJB 1.1 (yang dikritik hebat kerana dianggap wajar oleh komuniti pembangun Java). Walaupun kacang entiti (dalam EJB) menyediakan objek kegigihan, banyak pembangun telah digunakan untuk menggunakan objek yang agak ringan yang ditawarkan oleh DAO (Objek Akses Data) dan rangka kerja lain yang serupa. Hasilnya, JPA telah diperkenalkan dan ia menangkap banyak ciri kemas rangka kerja yang dinyatakan di atas.
Kegigihan seperti yang diterangkan dalam JPA meliputi API (ditakrifkan dalam javax.kegigihan), JPQL (Platform Java, Edisi Perusahaan) dan metadata yang diperlukan untuk objek hubungan. Keadaan entiti kegigihan biasanya dikekalkan ke dalam jadual. Kejadian entiti sepadan dengan baris jadual pangkalan data hubungan. Metadata digunakan untuk menyatakan hubungan antara entiti. Anotasi atau fail deskriptor XML yang berasingan (digunakan bersama aplikasi) digunakan untuk menentukan metadata dalam kelas entiti. JPQL, yang serupa dengan pertanyaan SQL, digunakan untuk menanyakan entiti yang disimpan.
Apakah itu Hibernate?
Hibernate ialah rangka kerja yang boleh digunakan untuk pemetaan hubungan objek yang bertujuan untuk bahasa pengaturcaraan Java. Secara lebih khusus, ia ialah perpustakaan ORM (pemetaan perhubungan objek) yang boleh digunakan untuk memetakan model perhubungan objek kepada model perhubungan konvensional. Secara ringkas, ia mencipta pemetaan antara kelas Java dan jadual dalam pangkalan data hubungan, juga antara jenis data Java ke SQL. Hibernate juga boleh digunakan untuk pertanyaan data dan mendapatkan semula dengan menjana panggilan SQL. Oleh itu, pengaturcara dibebaskan daripada pengendalian manual set hasil dan menukar objek. Hibernate dikeluarkan sebagai rangka kerja sumber terbuka dan percuma yang diedarkan di bawah lesen GNU. Pelaksanaan untuk API JPA disediakan dalam Hibernate 3.2 dan versi yang lebih baru. Gavin King ialah pengasas Hibernate.
Apakah perbezaan antara JPA dan Hibernate?
JPA ialah rangka kerja untuk mengurus data hubungan dalam aplikasi Java, manakala Hibernate ialah pelaksanaan khusus JPA (jadi idealnya, JPA dan Hibernate tidak boleh dibandingkan secara langsung). Dalam erti kata lain, Hibernate ialah salah satu rangka kerja paling popular yang melaksanakan JPA. Hibernate melaksanakan JPA melalui pustaka Hibernate Annotation dan EntityManager yang dilaksanakan di atas perpustakaan Hibernate Core. Kedua-dua EntityManager dan Anotasi mengikuti kitaran hayat Hibernate. Versi JPA terbaharu (JPA 2.0) disokong sepenuhnya oleh Hibernate 3.5. JPA mempunyai kelebihan mempunyai antara muka yang diseragamkan, jadi komuniti pembangun akan lebih mengenalinya daripada Hibernate. Sebaliknya, API Hibernate asli boleh dianggap lebih berkuasa kerana cirinya adalah superset daripada JPA.