API tiêu chí
API tiêu chí phù hợp hơn cho các truy vấn được tạo động. Vì vậy, nếu bạn muốn thêm các bộ lọc mệnh đề WHERE, các mệnh đề THAM GIA hoặc thay đổi mệnh đề ORDER BY hoặc các cột chiếu, thì API Tiêu chí có thể giúp bạn tạo ra truy vấn một cách linh hoạt theo cách cũng ngăn chặn các cuộc tấn công SQL Injection .
Mặt khác, các truy vấn Tiêu chí ít biểu cảm hơn và thậm chí có thể dẫn đến các truy vấn SQL rất phức tạp và không hiệu quả, như được giải thích trong bài viết này .
JPQL và HQL
JPQL là ngôn ngữ truy vấn thực thể tiêu chuẩn JPA trong khi HQL mở rộng JPQL và thêm một số tính năng dành riêng cho Hibernate.
JPQL và HQL rất biểu cảm và giống với SQL. Không giống như API Tiêu chí, JPQL và HQL giúp dễ dàng dự đoán truy vấn SQL cơ bản do nhà cung cấp JPA tạo ra. Việc xem xét các truy vấn HQL của một người cũng dễ dàng hơn nhiều so với các truy vấn Tiêu chí.
Cần lưu ý rằng việc chọn các thực thể với JPQL hoặc API Tiêu chí có ý nghĩa nếu bạn cần sửa đổi chúng. Nếu không, một phép chiếu DTO là một lựa chọn tốt hơn nhiều.
Phần kết luận
Nếu bạn không cần thay đổi cấu trúc truy vấn thực thể, thì hãy sử dụng JPQL hoặc HQL. Nếu bạn cần thay đổi tiêu chí lọc hoặc sắp xếp hoặc thay đổi phép chiếu, thì hãy sử dụng API Tiêu chí.
Tuy nhiên, chỉ vì bạn đang sử dụng JPA hoặc Hibernate, điều đó không có nghĩa là bạn không nên sử dụng SQL gốc. Các truy vấn SQL rất hữu ích và JPQL và API Tiêu chí không phải là sự thay thế cho SQL. Kiểm tra bài viết này để biết thêm chi tiết về chủ đề này.