JPA cung cấp đầy đủ công cụ cho phép chúng ta có thể thao tác với CSDL đơn giản và nhanh chóng. JPA có thể dùng để persist đố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) các đối tượng Java một cách đơn giản.
JPA là gì?
JPA (Java Persistence API) là đặc tả Java cho việc ánh xạ các đối tượng Java với CSDL quan hệ sử dụng một công nghệ phổ biến là ORM (Object Relational Mapping). JPA liên quan đến tính bền bỉ, không phải tất cả các đối tượng Java cần phải được duy trì, nhưng hầu hết các ứng dụng vẫn tồn tại các đối tượng nghiệp vụ chính. Đặc tả JPA cho phép bạn xác định đối tượng nào nên được duy trì và cách các đối tượng đó nên được duy trì trong các ứng dụng Java của bạn.
Ví dụ: bảng users với 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ì?
Mặc dù khác nhau về cách thực thi, nhưng mọi triển khai JPA đều cung cấp một số loại lớp ORM. Để hiểu được JPA và các công cụ tương thích với JPA, bạn cần phải nắm rõ về ORM. ORM (Object Relational Mapping) là kỹ thuật/cơ chế lập trình thực hiện ánh xạ CSDL sang đố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 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 ngôn ngữ lập trình hướng đối tượng
- Tính độc lập: Làm việc được cùng nhiều loại database, nhiều kiểu dữ liệu khác nhau. Dễ dàng thay đổi loại database, các câu lệnh SQL không cần phụ thuộc vào loại database
- Đơn giản và 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. 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 sẽ bị hạn chế, nhiều trường hợp 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 tự động sinh ra)
Một số ORM framework
JPA 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ứa những hướng dẫn để hiện thực ORM. Do đó cần phải có 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 nhất
Hibernate
Hibernate là 1 ORM framework cho phép lập trình viên thao tác với database hoàn toàn tự nhiên thông qua các đối tượng. Lập trình viê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ần Mô tả EntityManager Là một interface, nó cung cấp các API cho việc tương tác với Entity Entity Entity 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 EntityTransaction Có mối quan hệ 1-1 với EntityManager, các hoạt động được duy trì bởi lớp EntityTransaction Persistence Lớ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ấnCá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. Giúp lập trình viên giảm bớt việc viết code để lưu trữ dữ liệu vào database để có thể tập chung vào các công việc quan trọng hơn.
Tài liệu tham khảo:
- https://www.javatpoint.com/jpa-tutorial
- https://www.tutorialspoint.com/jpa/index.htm
- https://docs.oracle.com/javaee/7/tutorial/persistence-intro.htm
- https://www.infoworld.com/article/3379043/what-is-jpa-introduction-to-the-java-persistence-api.html
Lương Thuận