http://jira.springframework.org/browse/BATCH-262 The hibernate job blocks with high isolatio nlevels because it is reading a cursor and then updating the same objects (the cursor is in a different transaction because it uses openSession()). The resolution is to change the isolation level - might be worth some more careful work later to encourage the right sort of best practice.