2010-02-01 53 views
2

如果我配置了批量大小爲20的NHibernate,我是否有可能在常規的非批量更新相關場景中遇到問題?整個應用程序的NHibernate批量大小 - 任何問題?

我的應用程序執行的大部分更新/插入操作都是一次性的。但在某些情況下,我正在進行大規模更新/插入,這將從批處理中受益。我應該爲這些應用使用不同的會話配置,還是您認爲我可以安全地讓整個應用的批量更高?

我問的原因是,爲批處理場景設置不同的會話很麻煩(因爲這是一個具有每個請求會話的Web應用程序)。

回答

2

NH documentation,唯一的負到被提到的批量更新是這樣的:

樂觀併發檢查可以因爲ADO.NET 2.0被 受損不 返回受各 的行數聲明在批次中,只有 批次受 影響的總行數。

我不認爲這對小批量生產會造成問題。所以我懷疑更高的批量會對應用程序的正常運行產生負面影響。

但是,您應該考慮爲批量操作創建一個新的會話。正常的NHibernate會話將是inefficient for batch updates/inserts,因爲第一級緩存跟蹤每一個對象。您可以通過定期執行session.Flush(); session.Clear();來手動控制此操作,但可能更容易使用StatelessSession。