Dapatkan Semua Data dari Tabel dengan Hibernate

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat bagaimana mendapatkan semua data dari tabel dengan Hibernate menggunakan JPQL atau API Kriteria.

JPQL memberi kami implementasi yang lebih cepat dan sederhana sementara API Kriteria lebih dinamis dan kuat.

2. JPQL

JPQL menyediakan cara sederhana dan lugas untuk mendapatkan semua entitas dari tabel.

Mari kita lihat bagaimana rasanya mengambil semua siswa dari tabel menggunakan JPQL:

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

Metode createQuery () sesi Hibernate kami menerima string kueri yang diketik sebagai argumen pertama dan tipe entitas sebagai yang kedua. Kami menjalankan kueri dengan panggilan ke metode getResultList () yang mengembalikan hasil sebagai Daftar yang diketik .

Kesederhanaan adalah keuntungan dari pendekatan ini. JPQL sangat mirip dengan SQL, dan, oleh karena itu, lebih mudah untuk ditulis dan dipahami.

3. API Kriteria

API Kriteria menyediakan pendekatan dinamis untuk membuat kueri JPA.

Ini memungkinkan kita membuat kueri dengan membuat instance objek Java yang mewakili elemen kueri. Dan ini adalah solusi yang lebih bersih jika kueri dibuat dari banyak bidang opsional karena menghilangkan banyak rangkaian string.

Kami baru saja melihat kueri pilih semua menggunakan JPQL. Mari kita lihat padanannya menggunakan API Kriteria:

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 mendapatkan CriteriaBuilder yang kita gunakan untuk membuat Query Kriteria yang diketik . Nanti, kami menetapkan entri root untuk kueri tersebut. Dan terakhir, kami menjalankannya dengan metode getResultList () .

Sekarang, pendekatan ini mirip dengan yang kita lakukan sebelumnya. Tapi, ini memberi kami akses lengkap ke bahasa Java untuk mengartikulasikan nuansa yang lebih besar dalam merumuskan kueri.

Selain serupa, kueri JPQL dan kueri berbasis kriteria JPA memiliki kinerja yang setara.

4. Kesimpulan

Di artikel ini, kami mendemonstrasikan cara mendapatkan semua entitas dari tabel menggunakan JPQL atau API Kriteria.

Kode sumber lengkap untuk contoh tersedia di GitHub.