JPA là gì? Sự khác nhau giữa JPA với Hibernate

JPA là gì? Sự khác nhau giữa JPA với Hibernate

1. JPA là gì?

JPA (Java Persistence API) là 1 giao diện lập trình ứng dụng Java, nó mô tả cách quản lý các mối quan hệ dữ liệu  trong ứng dụng sử dụng Java Platform.

JPA cung cấp một mô hình POJO persistence cho phép ánh xạ các table/các mối quan hệ giữa các table trong database sang các class/mối quan hệ giữa các object.

Ví dụ: table Users với các column (Id, name, age…) sẽ tương ứng với class Users.java với các field Id, name, age… từ đó mỗi khi truy vấn table hay các column ta sẽ truy vấn trực tiếp trên các class, các field của class mà không cần quan tâm tới việc đang dùng loại database nào, dữ liệu database ra sao…

Một số khái niệm trong JPA

  • Entity: Entity là các đối tượng thể hiện tương ứng 1 table trong cơ sở dữ liệu. Khi lập trình, entity thường là các class POJO đơn giản, chỉ gồm các method getter, setter.
  • EntityManager: EntityManager là một giao diện (interface) cung cấp các API cho việc tương tác với các Entity như Persist (lưu một đối tượng mới), merge (cập nhật một đối tượng), remove (xóa 1 đối tượng).
  • EntityManagerFactory: EntityManagerFactory được dùng để tạo ra một thể hiện của EntityManager.

Kiến trúc JPA:

2. Hibernate là gì?

Hibernate là 1 ORM (Object Relational Mapping) framework cho phép người lập trình thao tác với database một cách hoàn toàn tự nhiên thông qua các đối tượng. Lập trình viên hoàn toàn không cần quan tâm đến loại database sử dụng, SQL…

Hay nói cách khác, Hibernate chính là cài đặt của JPA (JPA là 1 tập các interface, còn Hibernate implements các interface ấy 1 cách chi tiết).

Kiến trúc Hibernate:

3. Một số ORM framework khác.

Ngoài Hibernate ra có 1 số framework khác như Open JPA, Eclipselink cũng thực hiện implements JPA nhưng Hibernate được sử dụng phổ biến hơn cả.

JPA là gì? Sự khác nhau giữa JPA với Hibernate

4. Sự khác nhau giữa JPA với Hibernate.

JPA là tập các giao diện (interfaces), qui chuẩn, định nghĩa. còn Hibernate thực hiện cài đặt (implements) các giao diện đó, định nghĩa đó.

 

JPA là gì? Sự khác nhau giữa JPA với Hibernate

References

https://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html

https://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/jpa_overview_arch.html

stackjava.com