在ThreadLocal中存储NHibernate会话是否有意义,是否可以安全地假设线程安全并解决会话的延迟加载问题?假设只要线程正在执行Session就可以安全吗?就线程而言,我在谈论HttpRequet。
此外,我是否会用完NHibernate的会话?会话的最大数量是多少?如果我有很多线程,那会没关系吗?
答案 0 :(得分:2)
NHibernate会话不是线程安全的。 只要您将一个会话与一个应该正常工作的会话相关联。
如果您要使用http请求,请使用每个请求实现的会话的最佳方法,其中会话在请求启动时打开,在请求结束时关闭。在这种情况下,可以安全地假设只要线程正在执行,会话就可用。
通常NHibernate不会耗尽会话,但更好的做法是使用寿命最短的会话。