WRT ordering, batching is what comes to mind. Also we I think (used to) guarantee that session.save(a); session.save(b); would apply INSERT a / INSERT b in the same order in case our FK operation ordering algorithm was getting faulty.