3
我有一個情況,涉及到幾個線程同時填充數據庫與從網絡資源刮取的數據。刮板將定期運行以收集來自各種來源的新數據。NHibernate的多線程會話管理
我是新使用NHibernate並不完全確定如何最好地管理會話。
的每個工人做什麼一個例子:
- 颳去網頁源
- 刮相關的每個實體B,並記錄A有其他的B實體A(即A有很多B,一個B有一個A)
要堅持每個B,會話需要一個引用A來創建B,然後A需要將B添加到其子列表。 A和B都被堅持。
這種AB孩子 - 父母情況有一個層次結構,這樣A有很多B,B有很多C ...在葉級,A有成千上萬的葉子,所以這是不切實際的(?)保持會議一直沿着這條鏈路開放。
另一種方法是將每個父代的標識符記錄在鏈中(可以獨立於會話存儲),並在每次需要創建子代時通過此標識加載到父代中。
我也明白,ISession
是爲了單線程,所以我將至少需要每個線程一個會話,但除此之外,我真的不知道最好的方法?
任何想法讚賞,有點困惑,此刻!
一個StatelessSession將是我的情況適合,感謝您的建議。另外,開始並提交事務的好主意是多少次,例如,我應該針對每個單獨的插入還是對多個插入進行分組? –
如果你需要速度,那麼分組更好,如果你不想失去一些插入的情況下提交(例如你不能重複),然後提交每插入 – Firo