hibernate使用flush強制同步數據庫

  • 問題描述
同步車企的車型數據,由於得到的數據存在重複的品牌不同的車型,而我們的車輛品牌也需要
單獨保存,所以每次循環結束都會插入很多重複的品牌數據。
hibernate的持久化機制是採用session容器的方式來緩存數據,當進行save或者update
對象時,Hibernate並未將這個對象實際的寫入數據庫中,而僅僅是在session緩存中根據
應用的行爲做了登記,在真正需要將緩存中的數據flush入數據庫時才執行先前登記的所有行爲。

Hibernate到底是怎樣運作的?
需要將所有緩存flush入數據庫,Session啓動一個事務,並按照insert,update……,delete
的順序提交所有之前登記的操作(注意:所有insert執行完畢後纔會執行update) 

Hibernate的flush處理機制,我們在一些複雜的對象更新和保存的過程中就要考慮數據庫
操作順序的改變以及延時flush是否對程序的結果有影響。如果確實存在着影響,那就可以在
需要保持這種操作順序的位置加入flush強制Hibernate將緩存中記錄的操作flush入數據庫,
這樣看起來也許不太美觀,但很有效。
  • 解決方案
for內單個循環結束時進行flush操作,強制進行數據庫同步。處理後,數據就不存在重複
的記錄了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章