Home JBoss howto Hibernate How to open an online cursor with Hibernate?
11 | 03 | 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
Login
Sign here for the NewsLetter.



Poll
What book could be in your wish list next XMas ?
 
JBoss admin resources
Banner
JBoss howto

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 do I configure a Queue/Topic to work in a cluster?

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."