| How to open an online cursor with Hibernate? |
| Written by F.Marchioni | |||||
|
jboss recipe of the day
Supposing you have to fetch a large resultset and update the single objects. By using the standard Query Object you would retrieve the whole set of Objects in Memory:
Query q = session.createQuery("from ABC");
List l = q.list();
If you need to operate on an online cursor, then you can use the ScrollableResults:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
ScrollableResults itemCursor =
session.createQuery("from Account").scroll();
int count=0;
while ( itemCursor.next() ) {
Account a = (Account) itemCursor.get(0);
modifyObject(a);
if ( ++count % 100 == 0 ) {
session.flush();
session.clear();
}
}
tx.commit();
session.close();
Notice the counter which flushes the objects every 100 items to free memory.
JBoss.org Search
Custom Search
Only registered users can write comments!
Powered by !JoomlaComment 3.26
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |


