2011-06-28 68 views
0

例如我有從hibernate會話中提取的實體User user = session.getById(12); user.setName('new_name') reject request此代碼塊之後,我不想將更新存儲到用戶,並將其純粹用作Data Bean,但也不想將其從會話中分離出來,因爲我想延遲加載。對於修改,我想使用save,saveOrUpdate方法。是否有可能說休眠不會自動更新會話對象的所有修改字段?如何在會話關閉時強制休眠不保存和數據更新?

回答

0

您可以使用無狀態會話。他們不會進行任何髒檢查和相應的自動更新。很明顯,你會失去會話緩存(你可以自己跟蹤你的對象)和批量插入/刪除/更新。

+0

不,我不喜歡失去會話的機會和表現。此外,我想通過不對髒物進行髒檢查來提高性能。 – yura

1

FLUSHMODE.MANUAL只有在你明確指出的情況下才會刷新,我相信。

+0

它保證合併,保存等方法將實際數據存儲到數據庫嗎? – yura

+0

是否可以將SessionFactory配置爲始終創建手動刷新會話? – yura

+0

@ yura - 不,你必須刷新。或者使用FlushMode.Commit()和commit()。否則不會發生沖洗。 SessionFactory對這種模式AFAIK沒有默認值,當然你可以提供一個SessionFactoryHolder對象來返回包裝Sessions的默認值。 – MJB