JPA vs Hibernate
Hampir semua aplikasi perusahaan diperlukan untuk mengakses pangkalan data relasi secara berkala. Tetapi masalah yang dihadapi dengan teknologi terdahulu (seperti JDBC) adalah ketidakpadanan impedans (perbezaan antara teknologi berorientasikan objek dan relasi). Penyelesaian masalah ini diperkenalkan menerusi pengenalan lapisan abstrak yang dikenali sebagai lapisan Ketekunan, yang merangkumi akses pangkalan data dari logika perniagaan. JPA (Java Persistence API) adalah rangka kerja khusus untuk pengurusan data relasional (menggunakan lapisan ketekunan) dalam aplikasi Java. Terdapat banyak pelaksanaan vendor JPA yang digunakan dalam komuniti pemaju Jawa. Hibernate adalah pelaksanaan yang paling popular seperti JPA (DataNucleus, EclipseLink dan OpenJPA adalah beberapa yang lain). Versi JPA terbaru (JPA 2.0) disokong sepenuhnya oleh Hibernate 3.5, yang dikeluarkan pada bulan Mac, 2010.
Apa itu JPA?
JPA adalah rangka kerja untuk menguruskan data hubungan untuk Java. Ia boleh digunakan dengan aplikasi yang menggunakan JSE (Platform Java, Edisi Standard) atau JEE (Java Platform, Edisi Enterprise). Versi terkininya ialah JPA 2.0, yang dikeluarkan pada 10 Dis, 2009. JPA menggantikan EJB 2.0 dan EJB 1.1 kacang entiti (yang dikritik tinggi kerana menjadi kelas berat oleh komuniti pemaju Jawa). Walaupun kacang entiti (di EJB) menyediakan objek ketekunan, banyak pemaju digunakan untuk menggunakan objek yang ringan yang ditawarkan oleh DAO (Object Access Objects) dan lain-lain rangka kerja yang serupa. Hasilnya, JPA diperkenalkan, dan ia telah merangkumi banyak ciri-ciri yang rapi dari rangka kerja yang disebutkan di atas.
Kegigihan seperti yang diterangkan dalam JPA merangkumi API (ditakrifkan dalam javax.persistence), JPQL (Java Platform, Enterprise Edition) dan metadata yang diperlukan untuk objek hubungan. Keadaan entiti ketekunan biasanya berterusan ke dalam jadual. Contoh entiti sesuai dengan baris jadual pangkalan data hubungan. Metadata digunakan untuk menyatakan hubungan antara entiti. Anotasi atau fail deskriptor XML berasingan (digunakan dengan aplikasi) digunakan untuk menentukan metadata dalam kelas entiti. JPQL, yang serupa dengan pertanyaan SQL, digunakan untuk menanyakan entiti yang disimpan.
Apa itu Hibernate?
Hibernate adalah rangka kerja yang boleh digunakan untuk pemetaan objek-objek yang dimaksudkan untuk bahasa pengaturcaraan Java. Lebih khusus lagi, ia adalah perpustakaan ORM (pemetaan objek-relasi) yang boleh digunakan untuk memetakan model hubungan objek ke model hubungan konvensional. Secara ringkasnya, ia mewujudkan pemetaan antara kelas Java dan jadual dalam pangkalan data hubungan, juga antara jenis Java hingga jenis data SQL. Hibernate juga boleh digunakan untuk pertanyaan dan pengambilan data dengan menjana panggilan SQL. Oleh itu, pengaturcara dibebaskan dari pengendalian manual set hasil dan menukarkan objek. Hibernate dilepaskan sebagai rangka kerja bebas dan terbuka yang diedarkan di bawah lesen GNU. Pelaksanaan API JPA disediakan dalam versi Hibernate 3.2 dan seterusnya. Gavin King adalah pengasas Hibernate.
Apakah perbezaan antara JPA dan Hibernate??
JPA adalah kerangka untuk menguruskan data hubungan dalam aplikasi Java, sementara Hibernate adalah pelaksanaan khusus JPA (jadi ideal, JPA dan Hibernate tidak dapat dibandingkan secara langsung). Dengan kata lain, Hibernate adalah salah satu rangka kerja yang paling popular yang menerapkan JPA. Hibernate menerapkan JPA menerusi Hibernate Annotation dan EntityManager perpustakaan yang dilaksanakan di atas perpustakaan Core Hibernate. EntityManager dan Anotasi mengikuti hayat siklus Hibernate. Versi JPA terbaru (JPA 2.0) disokong sepenuhnya oleh Hibernate 3.5. JPA mempunyai manfaat mempunyai antara muka yang diseragamkan, jadi komuniti pemaju akan lebih mengenalinya daripada Hibernate. Sebaliknya, API Hibernate asli boleh dianggap lebih kuat kerana ciri-cirinya adalah superset dari JPA.