Pertanyaan Perbedaan antara kueri, kueri asli, kueri yang dinamai dan kueri yang diketik [ditutup]


Apa perbedaan antara kueri, kueri asli, kueri bernama, dan kueri yang diketik? Apakah permintaan 'berdiri sendiri' ada, atau hanya singkatan? Dalam pikiran saya, Query asli adalah permintaan yang ditulis dalam sql sederhana, sedangkan permintaan bernama berhubungan dengan entitas (hibernate-mapping). Bisakah seseorang menjelaskan ini secara singkat?


32
2017-10-20 12:27


asal


Jawaban:


Pertanyaan

Query merujuk ke permintaan JPQL / HQL dengan sintaks mirip dengan SQL yang umumnya digunakan untuk mengeksekusi pernyataan DML (operasi CRUD).

Di JPA, Anda dapat membuat kueri menggunakan entityManager.createQuery(). Anda bisa melihat API untuk lebih detail.

Di Hibernate, Anda gunakan session.createQuery()"

NativeQuery

Kueri asli mengacu pada kueri sql aktual (merujuk ke objek database sebenarnya). Kueri ini adalah pernyataan sql yang dapat langsung dijalankan dalam basis data menggunakan klien basis data.

JPA: entityManager.createNativeQuery() Hibernasi (implementasi Non-JPA): session.createSQLQuery()

NamedQuery

Mirip dengan bagaimana konstanta didefinisikan. NamedQuery adalah cara Anda menentukan kueri Anda dengan memberinya nama. Anda dapat menentukan ini dalam memetakan file dalam hibernate atau juga menggunakan anotasi di tingkat entitas.

TypedQuery

TypedQuery memberi Anda opsi untuk menyebutkan jenis entitas ketika Anda membuat kueri dan oleh karena itu operasi apa pun setelahnya tidak memerlukan cast eksplisit untuk jenis yang dimaksudkan. Padahal itu normal Query API tidak mengembalikan jenis Objek yang persis seperti yang Anda harapkan dan Anda perlu mentransmisikannya.


40
2017-10-20 13:03