Ölçüt API'sı
Ölçüt API'sı, dinamik olarak oluşturulan sorgular için daha uygundur. Bu nedenle, WHERE yan tümcesi filtreleri, JOIN yan tümceleri eklemek veya ORDER BY yan tümcesini veya projeksiyon sütunlarını değiştirmek istiyorsanız, Ölçüt API'si sorguyu SQL Enjeksiyon saldırılarını önleyecek şekilde dinamik olarak oluşturmanıza yardımcı olabilir .
Öte yandan, Ölçüt sorguları daha az ifade edicidir ve bu makalede açıklandığı gibi çok karmaşık ve verimsiz SQL sorgularına bile yol açabilir .
JPQL ve HQL
JPQL, JPA standart varlık sorgu dilidir, HQL ise JPQL'i genişletir ve Hazırda Bekleme özel bazı özellikler ekler.
JPQL ve HQL çok etkileyici ve SQL'e benziyor. Ölçüt API'sinin aksine, JPQL ve HQL, JPA sağlayıcısı tarafından oluşturulan temel SQL sorgusunu tahmin etmeyi kolaylaştırır. Kişinin HQL sorgularını incelemek, Ölçütlerden daha kolaydır.
JPQL veya Criteria API ile varlık seçmenin, değiştirmeniz gerektiğinde mantıklı olduğunu belirtmek gerekir. Aksi takdirde, bir DTO projeksiyonu çok daha iyi bir seçimdir.
Sonuç
Varlık sorgu yapısını değiştirmeniz gerekmiyorsa, JPQL veya HQL kullanın. Filtreleme veya sıralama ölçütlerini değiştirmeniz veya projeksiyonu değiştirmeniz gerekiyorsa, Ölçüt API'sını kullanın.
Ancak, JPA veya Hazırda Bekletme kullandığınız için, yerel SQL kullanmamanız gerektiği anlamına gelmez. SQL sorguları çok kullanışlıdır ve JPQL ve Criteria API, SQL'in yerini almaz. Bu konu hakkında daha fazla bilgi için bu makaleye göz atın .