Is it good practice to call org.hibernate.Session.flush() separately?
As said in org.hibernate.Session docs,
Must be called at the end of a unit of work, before commiting the transaction and closing the session (depending on flush-mode, Transaction.commit() calls this method).
Could you explain the purpose of calling flush() explicitely if org.hibernate.Transaction.commit() will do it already?
In the Hibernate Manual you can see this example
Without the call to the flush method, your first-level cache would throw an OutOfMemoryException
Also you can look at this post about flushing