Tôi rất bối rối khi nào và khi nào không sử dụng các truy vấn gốc trong JPA 2.0. Tôi đã có ấn tượng rằng việc sử dụng các truy vấn gốc có thể khiến tôi không đồng bộ với bộ đệm JPA. Nếu tôi có thể thực hiện điều tương tự với truy vấn JPQL hoặc CriteriaBuilder, có lý do nào tốt để sử dụng truy vấn gốc không? Tương tự, có bất kỳ nguy hiểm nào khi sử dụng truy vấn gốc nếu tôi có thể thực hiện điều tương tự với JPQL hoặc CriteriaBuilder không? Và cuối cùng, nếu có nguy cơ trong việc sử dụng truy vấn gốc đến mức không đồng bộ với bộ nhớ cache JPA, sẽ có cùng mối nguy hiểm trong việc thực hiện truy vấn tương đương với JPQL hoặc CriteriaBuilder không?Khi nào một người nên sử dụng truy vấn gốc với JPA 2.0 thay vì JPQL hoặc CriteriaBuilder?
Triết lý của tôi đã tránh các truy vấn gốc, nhưng chắc chắn có những lúc cần thiết. Dường như với tôi rằng nếu tôi có thể làm điều đó với JPQL hoặc CriteriaBuilder, thì tôi nên làm.
Cảm ơn.
Giải thích tuyệt vời @JB Nizet như mọi khi. Câu hỏi cũng hỏi về Trình tạo tiêu chí. Sự hiểu biết của tôi là các truy vấn Tiêu chí rất hữu ích để duy trì an toàn loại (mà JPQL không cung cấp như được đề cập trong câu trả lời của bạn). Tuy nhiên, cá nhân tôi thấy Criteria API rất cồng kềnh và khó đọc. Có bất kỳ lợi thế nào khác của API tiêu chí trên JPQL không ?? – HopeKing
Tôi cũng thấy API này rất cồng kềnh và không trực quan để sử dụng và khó đọc hơn. Tôi chỉ sử dụng API này khi tôi cần phải tạo một truy vấn động dựa trên ... tiêu chí (do đó tên của API). Ví dụ, khi người dùng gửi một biểu mẫu tìm kiếm với một số tiêu chí tùy chọn (tên, tên, ngày bith tối thiểu, ngày sinh tối đa, bất kỳ điều gì), các phần tử mệnh đề khác nhau phải được thêm vào hoặc không phụ thuộc vào sự hiện diện hoặc vắng mặt của các tiêu chí đó. –
Đến mức này và rất rõ ràng. Cảm ơn. – HopeKing