list() と scroll() の違いを理解するために、Hibernate API ドキュメントを参照しました。ScrollableResults はカーソルのようなものです。ScrollableResults の重要な機能は、get(int i) 関数を介して行内の他の結果を初期化することなく、現在の結果行の i 番目のオブジェクトにアクセスできることです。また、next() および previous() 関数を使用して結果セットを前後に移動することもできます。
例 :
ScrollableResults sc = session.createQuery("select e.employeeName,e.employeeDept FROM Employee e").scroll(ScrollMode.SCROLL_INSENSITIVE);
while(sc.next()) {
String empName = (String)sc.get(0);
System.out.println(empName);
String empdept = (String)sc.get(1);
System.out.println(empdept);
}
上記のプログラムの出力は、 employeeName および employeeDept の値になります。
ここで、resultSet の最後のレコードを取得したいとします。list() を使用すると、結果全体を反復する必要があります。ScrollableResults では、last()
関数を使用できます。
ScrollableResults sc = session.createCriteria(Employee.class).scroll();
for は次のように反復する必要があることに注意してください
while(sc.next()) {
Employee emp = (Employee)sc.get(0);
System.out.println(emp.getname);
}