Thứ Tư, 22 tháng 3, 2017

                  JPA Cretical API và JPQL Query 

1JPQL Query 

-JPQL(Java Persistence Query Language) nó tương đương với sql và được sử dụng JPA

-Nó là một String query cho phép các lập trình viên viết những câu lệnh query trên object entity trên enterpise application
-Cung cấp những query theo phương pháp tiếp cận hướng đối tượng
-Nó làm cho ứng dụng độc lập với database 
*Đặc điểm của JPQL 
+là một ngôn ngữ truy vấn cụ thể
+cho phép viết query động và tĩnh trên persisted entities 
+complier như ngôn ngữ sql
+sử dụng cú pháp nhận object hoặc value trên abstract schema

-VD về JPQL Named Query
-VD về JPQL Dynamic Query
-nó được sử dụng khí mà  ứng dụng build query trong luc runtime 


-Chúng ta có 4 bước  để thực thi JPQL query là
+chúng ta lấy EntityManager trong PersistenceContext
+tạo ra Query thông qua EntityManager 
+thực thi query 
+nhận kết quả thông qua phương thức query interface 
-Bảng danh sách các phương thức của JPQL interface


2 Cretical Query  API

-Sử dụng để định nghĩa các query động thông qua các đối tượng xác định.
-Được định nghĩa bằng cách khởi tạo các đối tượng của java
-Nó tương tác tốt với ngôn ngữ java hơn là JPQL query và hoạt động cơ sở dữ liệu qua các đối tượng
-Các truy vấn dựa trên giản đồ trìu tượng của các thực thể ,các mối quan hệ của chúng và các đối tượng được nhúng.
-VD Cretical Query API

 -Các  bước để thực hiện Cretical Query API
+Đối tượng CriteriaBulier được  tạo ra bởi EntityManager 
+CriteriaBulier create ra đối tượng CriteriaQuery để tạo select query 
+from method định nghĩa đối tượng mà sẽ để truy vấn
+Mỗi mệnh đề query định nghĩa như một method vd :method where để định nghĩa các diều kiện

2 So sánh 

-Câu hỏi đặt ra là sao có nhiều kiểu query và chúng ta sẽ biết sử dụng cái query nào vào khi nào
+thông thường chúng ta sẽ sử dụng những JPQL với những query tĩnh it biến động thì nó sẽ nhanh hơn rất nhiều so với Cretical API,và chúng ta sẽ sử dụng Cretical API cho những dữ liệu biến đổi liên tục như những parameter được truyền vào.Vì Cretical nó dựa vào cái khỏi tạo hay gọi cái instance đã được khởi tạo trước đó
để truy vấn trên cái đối tượng đó luôn
 -Cretical thì nó cũng dễ debugg hơn là trên query String của JPQL





Không có nhận xét nào:

Đăng nhận xét