Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

org.hibernate.Query .iterate() VS .getResultList() pembuatan kueri

Ini sepertinya bukan masalah dengan Hibernate API , ternyata ini perilaku yang diinginkan.

Query.iterate() :

Kembalikan hasil kueri sebagai Iterator . Jika kueri berisi beberapa hasil pra baris, hasilnya dikembalikan dalam sebuah instance dari Object[] .Entities dikembalikan karena hasil diinisialisasi sesuai permintaan. Kueri SQL pertama mengembalikan identifiers saja.

Menjalankan 1+N SQL pertanyaan. Kueri pertama hanya mengembalikan pengidentifikasi semua catatan dan ketika iterator yang dikembalikan diulang maka setiap kali kueri SQL terpisah dijalankan yang berisi klausa WHERE seperti WHERE id=N . Jika record ada dalam cache maka query pertama dijalankan dan query N sisanya tidak dieksekusi dan record diperoleh dari cache.

Iterator<Employee> iterator1 = session.createQuery("from Employee").iterate(); // SELECT EMP_ID FROM EMP
while(iterator1.hasNext()) {
    System.out.println(iterator1.next()); // SELECT * FROM EMP WHERE EMP_ID=?
}
Iterator<Employee> iterator2 = session.createQuery("from Employee").iterate(); // SELECT EMP_ID FROM EMP
while (iterator2.hasNext()) {
    System.out.println(iterator2.next()); // From cache, no SQL
}

Query.getResultList() :Executes 1 SQL query dan memuat seluruh data. Bahkan jika catatan ada dalam cache, kueri SQL baru dijalankan untuk memuat catatan dari database.

List<Employee> list1 = session.createQuery("from Employee").list(); // SELECT *FROM EMP
for (Employee e : list1) {
    System.out.println(e);
}
List<Employee> list2 = session.createQuery("from Employee").list(); // SELECT *FROM EMP
for (Employee e : list2) {
    System.out.println(e);
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Karyawan duplikasi dalam tabel karena beralih di departemen

  2. ORA-01855:AM/AM atau PM/PM yg dibutuhkan

  3. Tidak dapat terhubung ke Oracle DB mendapatkan kesalahan sebagai java.sql.SQLException:Pengecualian Io:Adaptor Jaringan tidak dapat membuat koneksi

  4. Tidak dapat menonaktifkan perlindungan status sesi di Oracle APEX 18.1.0.00.45 untuk Tindakan Dinamis yang memperbarui Item Halaman

  5. Apa kotak peralatan yang sempurna untuk pengembangan PL/SQL?