Hibernate commit() 和flush() 的區別

Hibernate commit() 和flush() 的區別
孫衛琴<<精通Hibernate java對象持久化技術詳解>>p177 說,flush()方法進行清理緩存的操作,執行一系列的SQL語句,但不會提交事務;commit()方法會先調用flush()方法,然後提交事務. 提交事務意味着對數據庫所做的更新會永久保持下來
p148 所謂清理,是指Hibernate 按照持久化象的狀態來同步更新數據庫

Flush()後只是將Hibernate緩存中的數據提交到數據庫,如果這時數據庫處在一個事物當中,則數據庫將這些SQL語句緩存起來,當Hibernate進行commit時,會告訴數據庫,你可以真正提交了,這時數據纔會永久保存下來,也就是被持久化了.

 

 

 

commit針對事物的
flush針對緩存的
同步到數據庫中後只要沒有commit還是可以rollback的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章