Sự khác biệt giữa JPA và Hibernate

Sự khác biệt giữa JPA và Hibernate
Sự khác biệt giữa JPA và Hibernate

Video: Sự khác biệt giữa JPA và Hibernate

Video: Sự khác biệt giữa JPA và Hibernate
Video: Kết nối iPhone với PC Windows ngon như dùng MacBook? Phone Link vs. Intel Unison 2024, Tháng bảy
Anonim

JPA so với Hibernate

Hầu như tất cả các ứng dụng doanh nghiệp đều đượ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 đó (chẳng hạn như JDBC) là sự không phù hợp về trở kháng (sự khác biệt giữa công nghệ hướng đối tượng và công nghệ quan hệ). Một giải pháp cho vấn đề này đã được đưa ra thông qua việc giới thiệu một lớp trừu tượng gọi là lớp Persistence, lớp này đóng gói truy cập cơ sở dữ liệu từ logic nghiệp vụ. JPA (Java Persistence API) là một khuôn khổ dành riêng cho việc quản lý dữ liệu quan hệ (sử dụng lớp bền vững) trong các ứng dụng Java. Có nhiều nhà cung cấp triển khai JPA được sử dụng trong cộng đồng nhà phát triển Java. Hibernate là cách triển khai JPA phổ biến nhất như vậy (DataNucleus, EclipseLink và OpenJPA là một số ứng dụng khác). Phiên bản JPA mới nhất (JPA 2.0) được hỗ trợ đầy đủ bởi Hibernate 3.5, được phát hành vào tháng 3 năm 2010.

JPA là gì?

JPA là một khuôn khổ để 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 đậu thực thể EJB 2.0 và EJB 1.1 (vốn bị chỉ trích nặng nề bởi cộng đồng nhà phát triển Java). Mặc dù các đậu thực thể (trong EJB) cung cấp các đối tượng bền bỉ, nhưng nhiều nhà phát triển đã quen với việc 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 công tác 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 khuôn khổ được đề cập ở trên.

Tính bền bỉ như được mô tả trong JPA bao hàm API (được định nghĩa trong javax.bền bỉ), 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ể tồn tại thường được duy trì trong một bảng. Các phiên bả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ể. Chú thích hoặc tệp mô tả XML riêng biệt (được triển khai 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ư truy vấn SQL, được sử dụng để truy vấn các thực thể được lưu trữ.

Hibernate là gì?

Hibernate là một khuôn khổ 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, nó là một thư viện ORM (đối tượng-ánh xạ quan hệ) có thể được sử dụng để ánh xạ mô hình đối tượng-quan hệ sang mô hình quan hệ thông thường. Nói một cách dễ hiểu, 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 như giữa các kiểu dữ liệu Java với 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 đó, người lập trình không cần phải xử lý thủ công các tập kết quả và chuyển đổi các đối tượng. Hibernate được phát hành dưới dạng một khuôn khổ mã nguồn mở và miễn phí được phân phối theo giấy phép GNU. Việc triển khai cho 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 khuôn khổ để 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 là không thể so sánh trực tiếp JPA và Hibernate). Nói cách khác, Hibernate là một trong những khuôn khổ 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 các thư viện Hibernate Core. Cả EntityManager và Annotations đều tuân theo vòng đời của Hibernate. Phiên bản JPA mới nhất (JPA 2.0) được hỗ trợ đầy đủ bởi Hibernate 3.5. 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 là Hibernate. Mặt khác, các API Hibernate bản địa có thể được coi là mạnh mẽ hơn vì các tính năng của nó là một tập hợp siêu của JPA.

Đề xuất: