使用NHibernate处理近静态数据?

时间:2011-07-27 13:50:13

标签: .net nhibernate

我正在寻找一种处理NHibernate中近静态数据的好方法 - 其中近静态数据是配置/查找数据,通常通过应用程序的管理部分(很少)改变。

由于这些数据不经常更改并且可能非常大 - 并且对于大多数应用程序而言应该是“不可变的”,因此将其加载到NHibernate会话中以检查是否存在刷新等似乎很愚蠢。

我可以想到一些可能的解决方案:

  1. 在应用程序的正常部分加载数据后使用Evict将其从更改跟踪/刷新中排除。依靠二级缓存快速检索。

  2. 为应用程序的正常部分创建自己的缓存并在那里存储分离的实体,在管理员部分写入时更新缓存。

  3. 使用FlushMode.Never的第二个会话加载应用程序正常部分的数据。

  4. 在NH 3.0中使用Criterias / QueryOver以只读方式检索数据。

  5. ???

  6. 对于大多数应用程序来说,它似乎不是一个相当普遍的问题,处理它的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

我会打开一个单独的会话并在需要时加载所需的配置数据,然后关闭会话。如果经常使用数据,可以将其缓存在某处或保持单独的会话打开以便于第一级缓存。

答案 1 :(得分:1)

我会采用双管齐下的方法。首先,您可以使用二级缓存来允许所有会话访问相同的数据实例。其次,我会使用IStatelessSession来检索它。这将阻止会话实际跟踪对象。