JPA là gì?

JPA (Java Persistence API) là một đặc tả Java cho việc ánh xạ các đối tượng Java với CSDL quan hệ sử dụng công nghệ phổ biến là ORM (Object Relational Mapping)

JPA cung cấp đầy đủ các công cụ cho phép chúng ta có thể thao tác với CSDL một cách đơn giản và nhanh chóng. JPA có thể dùng để persist một đối tượng Java (POJO - Plain Old Java Object) vào trong CSDL hoặc lấy dữ liệu từ CSDL và ánh xạ (mapping) ra các đối tượng Java một cách đơn giản.

JPA hoạt động như một cầu nối giữa các table/các mối quan hệ giữa các table trong database và các class/mối quan hệ giữa các object.

Ví dụ: bảng users với các cột (id, username, password) sẽ tương ứng với class User.java có các thuộc tính id, username, password.

ORM là gì?

ORM (Object Relational Mapping) là một kỹ thuật/cơ chế lập trình thực hiện ánh xạ CSDL sang các đối tượng trong các ngôn ngữ lập trình hướng đối tượng.

Việc sử dụng ORM cho phép lập trình viên thao tác với database một cách tự nhiên, dễ hiểu thông qua các đối tượng.

Ưu điểm của ORM

  • OOP: ORM giúp lập trình viên tập trung vào lập trình hướng đối tượng
  • Tính độc lập: Làm việc được với nhiều loại database, nhiều kiểu dữ liệu khác nhau. Dễ dàng thay đổi loại database hơn. Các câu lệnh SQL không cần phụ thuộc vào loại database
  • Đơn giản, dễ sử dụng: Hỗ trợ HSQL, cung cấp nhiều API truy vấn.
  • Năng suất hơn: Viết code ít hơn, dễ hiểu hơn. Phù hợp với các case CRUD (Create, Read, Update, Delete)
  • Tái sử dụng code

Nhược điểm

  • Khả năng truy vấn bị hạn chế, nhiều trường hợp ta vẫn phải sử dụng native SQL để truy vấn database
  • Khó tối ưu câu lệnh SQL (do câu lệnh SQL được ORM tự động sinh ra)

Một số ORM framework

JPA chỉ là một API định nghĩa các đặc tả cần thiết và không có code hiện thực từ những đặc tả đó. Nó chỉ chứa những hướng dẫn để hiện thực ORM. Do đó cần phải có một cài đặt ORM để hoạt động và persist các đối tượng Java. Các ORM Framework có thể sử dụng cho JPA như:

  • Hibernate
  • TopLink
  • ORMLite
  • iBatis
  • JPOX

Trong đó hibernate được sử dụng phổ biến hơn cả

Hibernate

Hibernate là 1 ORM 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,…

Kiến trúc Hibernate:

Kiến trúc JPA

Thành phầnMô tả
EntityManagerLà một interface, nó cung cấp các API cho việc tương tác với Entity
EntityEntity là cá đối tượng, được lưu trữ dưới dạng bản ghi trong database
EntityManagerFactoryĐược sử dụng để tạo instance của EntityManager
EntityTransactionCó mối quan hệ 1-1 với EntityManager, các hoạt động được duy trì bởi lớp EntityTransaction
PersistenceLớp này chứa các phương thức static để lấy instance EntityManagerFactory
QueryĐây là interface, được thực hiện bởi mỗi nhà cung cấp JPA để có được các đối tượng quan hệ đáp ứng các tiêu chí truy vấn

Các lớp và interface được sử dụng để lưu trữ các thực thể vào database dưới dạng bản ghi. Chúng giúp lập trình viên giảm bớt việc viết code để lưu trữu dữ liệu vào database để có thể tập chung vào các công việc quan trọng hơn

Tham khảo Lộ trình Java Fullstack cho người mới bắt đầu
Khóa học - tại đây
Hỗ trợ - Ms Mẫn 0963023185 (zalo)