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.
0
0
0
s2smodern