JPA vs Hibernate
Hầu như tất cả các ứng dụng doanh nghiệp được yêu cầu truy cập cơ sở dữ liệu quan hệ thường xuyên. Nhưng một vấn đề phải đối mặt với các công nghệ trước đó (như JDBC) là sự không phù hợp trở kháng (sự khác biệt giữa các công nghệ hướng đối tượng và quan hệ). Một giải pháp cho vấn đề này đã được giới thiệu thông qua việc giới thiệu một lớp trừu tượng gọi là lớp Persistence, gói gọn truy cập cơ sở dữ liệu từ logic nghiệp vụ. JPA (Java Persistence API) là một khung dành riêng cho việc quản lý dữ liệu quan hệ (sử dụng lớp lưu giữ lâu bền) trong các ứng dụng Java. Có nhiều triển khai JPA của nhà cung cấp được sử dụng trong cộng đồng nhà phát triển Java. Hibernate là triển khai JPA phổ biến nhất như vậy (DataNucleus, EclipseLink và OpenJPA là một số khác). Phiên bản JPA mới nhất (JPA 2.0) được Hibernate 3.5 hỗ trợ đầy đủ, được phát hành vào tháng 3 năm 2010.
JPA là gì?
JPA là một khung quản lý dữ liệu quan hệ cho Java. Nó có thể được sử dụng với các ứng dụng sử dụng JSE (Nền tảng Java, Phiên bản tiêu chuẩn) hoặc JEE (Nền tảng Java, Phiên bản doanh nghiệp). Phiên bản hiện tại của nó là JPA 2.0, được phát hành vào ngày 10 tháng 12 năm 2009. JPA đã thay thế các thực thể EJB 2.0 và EJB 1.1 (bị cộng đồng nhà phát triển Java chỉ trích nặng nề). Mặc dù các bean thực thể (trong EJB) cung cấp các đối tượng bền vững, nhiều nhà phát triển đã được sử dụng để sử dụng các đối tượng tương đối nhẹ được cung cấp bởi DAO (Đối tượng truy cập dữ liệu) và các khung tương tự khác thay thế. Kết quả là, JPA đã được giới thiệu và nó đã nắm bắt được nhiều tính năng gọn gàng của các khung được đề cập ở trên.
Sự bền bỉ như được mô tả trong JPA bao gồm API (được xác định trong javax.persistence), JPQL (Nền tảng Java, Phiên bản doanh nghiệp) và siêu dữ liệu cần thiết cho các đối tượng quan hệ. Trạng thái của một thực thể kiên trì thường được duy trì trong một bảng. Thể hiện của một thực thể tương ứng với các hàng của bảng của cơ sở dữ liệu quan hệ. Siêu dữ liệu được sử dụng để thể hiện mối quan hệ giữa các thực thể. Các chú thích hoặc các tệp mô tả XML riêng biệt (được triển khai cùng với ứng dụng) được sử dụng để chỉ định siêu dữ liệu trong các lớp thực thể. JPQL, tương tự như các truy vấn SQL, được sử dụng để truy vấn các thực thể được lưu trữ.
Ngủ đông là gì?
Hibernate là một khung công tác có thể được sử dụng để ánh xạ quan hệ đối tượng dành cho ngôn ngữ lập trình Java. Cụ thể hơn, đó là một thư viện ORM (ánh xạ quan hệ đối tượng) có thể được sử dụng để ánh xạ mô hình quan hệ đối tượng vào mô hình quan hệ thông thường. Nói một cách đơn giản, nó tạo ra một ánh xạ giữa các lớp và bảng Java trong cơ sở dữ liệu quan hệ, cũng giữa các kiểu dữ liệu Java sang SQL. Hibernate cũng có thể được sử dụng để truy vấn và truy xuất dữ liệu bằng cách tạo các cuộc gọi SQL. Do đó, lập trình viên cảm thấy nhẹ nhõm khi xử lý thủ công các tập kết quả và chuyển đổi đối tượng. Hibernate được phát hành dưới dạng khung nguồn mở và miễn phí được phân phối theo giấy phép GNU. Việc triển khai API JPA được cung cấp trong Hibernate 3.2 và các phiên bản mới hơn. Gavin King là người sáng lập Hibernate.
Sự khác biệt giữa JPA và Hibernate là gì?
JPA là một khung để quản lý dữ liệu quan hệ trong các ứng dụng Java, trong khi Hibernate là một triển khai cụ thể của JPA (vì vậy lý tưởng nhất, JPA và Hibernate không thể được so sánh trực tiếp). Nói cách khác, Hibernate là một trong những khung phổ biến nhất thực hiện JPA. Hibernate triển khai JPA thông qua các thư viện Hibernate Annotation và EntityManager được triển khai trên đầu các thư viện Hibernate Core. Cả EntityManager và Chú thích đều theo vòng đời của Hibernate. Phiên bản JPA mới nhất (JPA 2.0) được Hibernate 3.5 hỗ trợ đầy đủ. JPA có lợi ích là có một giao diện được chuẩn hóa, vì vậy cộng đồng nhà phát triển sẽ quen thuộc với nó hơn Hibernate. Mặt khác, API Hibernate bản địa có thể được coi là mạnh hơn vì các tính năng của nó là siêu bộ của JPA.