有什么理由我不应该在nHibernate中缓存吗?

时间:2011-03-16 18:08:11

标签: nhibernate fluent-nhibernate

我刚刚在流利的nHibernate中发现了Cache.ReadWrite()的快乐,并且已经广泛地用nhprof分析结果。

它似乎非常有用,但这看起来有点具有欺骗性。是否有任何特殊原因我不想想要从查询中缓存一个非常常用的对象?我的意思是,我不得不假设我不应该只使用缓存属性来装饰每一个映射...或者我应该吗?

1 个答案:

答案 0 :(得分:2)

像往常一样,这取决于:)

如果某些内容有可能被不使用二级缓存的后台进程更新,或者直接在数据库中更改,则缓存会导致问题。

不经常访问的实体可能不适合二级缓存,因为它们只会占用空间。

此外,如果您将集合映射为Inverse,您可能会看到一些奇怪的情况 - 正确的二级缓存无法获取更改,您需要手动逐出集合。

正如sJhonny在下面指出的那样,如果您有一个Web场景(或您的应用程序在多个服务器上运行的任何场景),您将需要使用分布式缓存(如memcached)而不是内置的ASP.net缓存