Site icon Blog Dương Trạng

Tổng quan về JPA (Java Persistence API)

Tổng quan về JPA (Java Persistence API)

Tổng quan về JPA (Java Persistence API)

Bài viết được sự cho phép của tác giả Giang Phan

Bất kỳ một ứng dụng nào cũng đều cần phải thực hiện các tháo tác (CRUD) đến database bằng việc lưu trữ, truy vấn dữ liệu. Chúng ta cần phải viết nhiều code để thực hiện các việc này.

Với công nghệ JDBC trước đây, chúng ta phải thực hiện các việc: mở kết nối vào Database, tạo các Assertion, ResultSet, … và sau cùng phải đóng tất cả các thứ đó lại. Dẫn đến code sẽ trở nên cồng kềnh, khó mở rộng và bảo trì. Chúng ta cũng cần phải làm việc với cả Java code và SQL. Thực tế, từng Database khác nhau thì câu SQL có một số phần khác nhau, nên đòi hỏi chúng ta phải nắm được sự khác biệt này để viết code cho phù hợp. Khi ứng dụng muốn chuyển từ database sang database khác (ví dụ từ MySQL sang Oracle) thì chắc chắn sẽ có một số phần của câu SQL cần phải đổi. Công việc sửa code lại đòi hỏi phải check lại ứng dụng. Điều này sẽ tốn thời gian, chi phí phát triển và cũng gặp không ít rủi ro. Để khắc phục nhược điểm này, đã có rất nhiều Framework ra đời với mục đích giúp xóa đi vấn để về tương thích giữa các Database, giúp tập trung vào phần xử lý nghiệp vụ.

Trong phần tiếp theo của bài viết này, tôi sẽ giới thiệu với các bạn JPA (Java Persistence API) – một chuẩn đặc tả cho các ORM Framework giải quyết vấn đề trên.

Xem thêm các việc làm Java lương cao trên TopDev

Giới thiệu JPA

JPA là gì?

JPA là viết tắt của Java Persistence API, nó là một đặc tả Java cho việc ánh xạ giữa các đối tượng Java với cơ sở dữ liệu 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 cơ sở dữ liệu 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 Outdated Java Object) vào trong cơ sở dữ liệu hoặc lấy dữ liệu từ cơ sở dữ liệu 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 desk/ các mối quan hệ giữa các desk trong database và các class/ mối quan hệ giữa các object. Ví dụ: desk USER với các column (Id, username, password) sẽ tương ứng với class Consumer.java với các area Id, username, password. Từ đó mỗi khi truy vấn desk hay các column ta sẽ gọi trực tiếp các phương thức trên các class, các area của class mà không cần quan tâm tới việc đang dùng loại database nào, kiểu dữ liệu database ra sao, …

ORM là gì?

ORM là viết tắt của Object Relational Mapping, là một công nghệ/ khái niệm/ quá trình chuyển đổi dữ liệu từ ngôn ngữ hướng đối tượng sang Database quan hệ và ngược lại. Ví dụ, trong Java nó được thực hiện với sự trợ giúp của Reflection và JDBC.

ORM có khả năng xử lý các thao tác của nhiều loại cơ sở dữ liệu khác nhau một cách dễ dàng mà không quan tâm đến loại database sử dụng (SQL Server, MySQL, PostgreSQL, …) hay loại thao tác sử dụng (INSERT, UPDATE, DELETE, SELECT, …).

Một số ORM framework hỗ trợ JPA

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, iBatis, Eclipse Hyperlink, OpenJPA, ….

Lợi ích của JPA

Tại sao nên dùng JPA

Kiến trúc JPA

JPA sử dụng metadata để ánh xạ các đối tượng persistence với các bảng trong cơ sở dữ liệu. JPA hỗ trợ SQL như là một ngôn ngữ truy vấn để dễ dàng xử lý các truy vấn cơ sở dữ liệu. Ngôn ngữ truy vấn JPA có thể dùng thực thi cả truy vấn tĩnh và truy vấn động.

JPA bao gồm ba thành phần chính là: Entity, EntityManager, và EntityManagerFactory. Ngoài ra còn có, EntityTransaction, Persistence, Question.

Entity

Entity là các đối tượng thể hiện tương ứng 1 desk trong cơ sở dữ liệu. Entity thường là các class POJO đơn giản, chỉ gồm các phương thức getter, setter.

Dưới đây là một số đặc điểm của một Entity:

EntityManager

EntityManager là một interface cung cấp các API cho việc tương tác với các Entity.

Một số chức năng cơ bản của EntityManager như:

EntityManagerFactory

EntityManagerFactory được dùng để tạo ra một occasion của EntityManager.

Persistence

Một Persistence định nghĩa một tập hợp các Entity class được quản lý bởi 1 instacne của EntityManager trong ứng dụng.

Persistence (javax.persistence.Persistence) class bao gồm các phương thức static để lấy occasion của EntityManagerFactory.

EntityTransaction

Một Transaction là một tập hợp các thao tác trong đó tất cả các thao tác phải được thực hiện thành công hoặc tất cả thất bại.

Một database transaction bao gồm một tập hợp các câu lệnh SQL được dedicated hoặc rolled again trong một unit.

EntityTransaction có quan hệ 1-1 với EntityManager. Bất kỳ thao tác nào được bắt đầu thông qua đối tượng EntityManager đều được đặt trong một Transaction. Đối tượng EntityManager giúp tạo EntityTransaction.

Question

Đây là một interface, được mỗi nhà cung cấp JPA implement để có được các đối tượng quan hệ đáp ứng các tiêu chí (standards) truy vấn.

Hình bên dưới mô tả quan hệ giữa các thành phần trên:

Các tính năng của JPA

Một số tính năng của JPA:

Trong bài này tôi chỉ giới thiệu với các bạn các khái niệm cơ bản về JPA và kiến trúc của nó. Trong các bài viết tiếp theo chúng ta sẽ cùng tìm hiểu về Hibernate – một implement của JPA, được sử dụng rất nhiều trong các ứng dụng.

Tài liệu tham khảo:

Bài viết gốc được đăng tải tại gpcoder.com

Có thể bạn quan tâm:

Xem thêm nhiều công việc CNTT hấp dẫn trên TopDev

Exit mobile version