Dapatkan Semua Data dari Jadual dengan Hibernate

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat bagaimana mendapatkan semua data dari jadual dengan Hibernate menggunakan JPQL atau Criteria API.

JPQL memberi kita pelaksanaan yang lebih cepat dan sederhana semasa menggunakan Criteria API lebih dinamik dan mantap.

2. JPQL

JPQL menyediakan kaedah mudah dan mudah untuk mendapatkan semua entiti dari jadual.

Mari lihat bagaimana rupa pengambilan semua pelajar dari jadual menggunakan JPQL:

public List findAllStudentsWithJpql() { return session.createQuery("SELECT a FROM Student a", Student.class).getResultList(); } 

Kaedah createQuery () sesi Hibernate kami menerima rentetan pertanyaan yang ditaip sebagai argumen pertama dan jenis entiti sebagai yang kedua. Kami melaksanakan pertanyaan dengan panggilan kepada getResultList () kaedah yang mengembalikan keputusan sebagai ditaip Senarai .

Kesederhanaan adalah kelebihan pendekatan ini. JPQL sangat dekat dengan SQL, dan oleh itu, lebih mudah untuk ditulis dan difahami.

3. API Kriteria

API Kriteria menyediakan pendekatan dinamik untuk membina pertanyaan JPA.

Ini memungkinkan kita untuk membina pertanyaan dengan memberi contoh objek Java yang mewakili elemen pertanyaan. Dan ini adalah penyelesaian yang lebih bersih jika pertanyaan dibuat dari banyak bidang pilihan kerana ia menghilangkan banyak gabungan rentetan.

Kami baru sahaja melihat pertanyaan pilih-semua menggunakan JPQL. Mari kita lihat setaraf menggunakan Kriteria API:

public List findAllStudentsWithCriteriaQuery() { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Student.class); Root rootEntry = cq.from(Student.class); CriteriaQuery all = cq.select(rootEntry); TypedQuery allQuery = session.createQuery(all); return allQuery.getResultList(); } 

Pertama, kita mendapat CriteriaBuilder yang kita gunakan untuk membuat Kriteria Query yang ditaip . Kemudian, kami menetapkan entri root untuk pertanyaan. Dan terakhir, kami melaksanakannya dengan kaedah getResultList () .

Sekarang, pendekatan ini serupa dengan yang kita lakukan sebelumnya. Tetapi, ini memberi kita akses lengkap ke bahasa Java untuk mengartikulasikan nuansa yang lebih besar dalam merumuskan pertanyaan.

Selain serupa, pertanyaan JPQL dan pertanyaan berdasarkan kriteria JPA mempunyai prestasi yang setara.

4. Kesimpulan

Dalam artikel ini, kami menunjukkan cara mendapatkan semua entiti dari jadual menggunakan JPQL atau API Kriteria.

Kod sumber lengkap untuk contoh boleh didapati di GitHub.