Home JBoss howto Hibernate How to open an online cursor with Hibernate?
30 | 07 | 2010
JBoss 5 AS Book
"JBoss AS 5 development" reviews
Please share your feedback/review with other readers!
Banner
Dashboard
Advertise with Us
Banner
RSS Feed
Java EE 1.6 resources
Login
Sign here for the NewsLetter.



JBoss admin resources
Banner
Java EE 1.6 resources
JBoss howto

How to avoid the 50 seconds start up limit in Eclipse ?

JBoss recipe of the day ...
Read More

How can you solve deployment errors caused by large war/jar/ear files ?

jboss recipe of the day ...
Read More

How do you configure your .war to be deployed after your EJB ?

jboss recipe of the day ...
Read More
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
Comments
Search
Only registered users can write comments!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."