commit
commit

Reputation: 4807

What to use Flush Mode 'Auto' or 'Commit'

As my title described, I am using hibernate Auto flush mode mechanism in my application. So, when I change any data in a hibernate persistent object, it reflects automatically in the database. I don't want this. So I found a solution to use FlushMode Commit instead.

So here is my actual question:

http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/FlushMode.html

Upvotes: 14

Views: 35588

Answers (2)

Barett
Barett

Reputation: 5948

Hibernate (and JPA) are designed to automatically detect and persist changes to persistent objects to the database. There is no "save" operation.

If you don't want things saved, you should use detached objects. Either use a StatelessSession to load them, or call detach after loading your objects. This removes them from the monitoring that will automatically save them.

Don't mess with the flush settings, it will just give you headaches later.

Upvotes: 12

vitalidze
vitalidze

Reputation: 1082

is it better to use Commit flush mode instead of Auto

When your application uses queries the FlushMode.COMMIT will most likely perform better because it will not flush session before each query. I know that per javadoc it should flush session only when necessary but from my experience FlushMode.COMMIT performs even better in read-only sessions. Auto-flush doesn't mean that any change to the persistent object is immediately posted to the database.

what is meaning of below statement specified in document

The Session is sometimes flushed before query execution in order to ensure that queries never return stale state.

As I've written above when FlushMode.AUTO (default) is used it will flush session before every query (HQL, Criteria, SQL query) made to the database to make sure results will contain all entities added within current session.

Upvotes: 8

Related Questions