2011-03-09 42 views
1

在我的團隊正在開發的項目中,有一個Windows服務遍歷某個表中的所有實體,並根據一些規則更新其某些字段定義。我們使用NHibernate作爲我們的ORM工具。目前,我們爲整個進程打開一個會話和一個事務,這意味着事務在所有實體處理完成後被提交。我認爲這種方法不好,我想聽聽更多的意見: 我們是否應該保持目前的會話管理方式,或者應該採用不同的方法?如何管理會話/事務生命週期以處理許多實體

我想過的一個選擇是爲每個實體打開一個事務,另一個建議是爲每個實體打開一個新的會話。 你認爲哪種方法最適合?

回答

2

沒有一種方法可以做到這一點;這一切都取決於具體情況。

在我正在開發的應用程序中,我有三種方法的示例,並且有選擇每個方法的原因。例如:

  • 整個過程必須有事務原子:使用單個事務
  • 的過程有許多共同點的數據,但在「主」表中每條記錄可以被認爲是一個工作單元:使用單個會話,多個事務
  • 處理主表中的每個記錄應該獨立於其他(包括錯誤處理):使用每個記錄的會話
相關問題