Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

org.hibernate.Query .iterate () VS .getResultList () tạo truy vấn

Đây dường như không phải là vấn đề với Hibernate API , biến điều này thành hành vi mong muốn.

Query.iterate () :

Trả về kết quả truy vấn dưới dạng Iterator . Nếu truy vấn chứa nhiều kết quả ở hàng trước, kết quả được trả về trong một bản sao của Object[] . Entities trả về khi kết quả được khởi tạo theo yêu cầu. Truy vấn SQL đầu tiên trả về identifiers chỉ.

Thực thi 1+N SQL truy vấn. Truy vấn đầu tiên chỉ trả về mã định danh của tất cả các bản ghi và khi trình lặp trả về được lặp lại thì mỗi lần thực thi truy vấn SQL riêng biệt có chứa mệnh đề WHERE như WHERE id=N . Nếu các bản ghi có trong bộ đệm thì truy vấn đầu tiên sẽ được thực thi và N truy vấn còn lại sẽ không được thực thi và các bản ghi được lấy từ bộ đệm.

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 và tải toàn bộ dữ liệu. Ngay cả khi các bản ghi có trong bộ đệm, một truy vấn SQL mới sẽ được thực thi để tải các bản ghi từ cơ sở dữ liệu.

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. ORA_HASH của Oracle có ngẫu nhiên không?

  2. Cách nhanh nhất để thực hiện so sánh trường trong cùng một bảng với lượng lớn dữ liệu trong oracle

  3. Memberhip.ValidateUser luôn trả về false sau khi nâng cấp lên VS 2010 / .NET 4.0

  4. Làm cách nào để tôi có thể tự động mở khóa các bảng trong Oracle sau một thời gian nhất định?

  5. Làm cách nào để tạo thư mục thông qua trình tạo biểu mẫu Oracle?