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