NHibernate缓存过期

Roh*_*hit 7 nhibernate caching

我目前使用自定义开发的ORM,并计划转向nhibernate.

目前,我使用L1 - 会话级缓存和L2 - 应用程序级缓存.

每当L1缓存从L2缓存请求一个对象时,它会检查数据库是否自上次加载后进行了修改,并且只有在它被修改后才加载.

我可以用NHibernate做到这一点.简而言之,缓存不会伤害我,因为它总是获取最新数据并节省对象创建和加载时间.

Mau*_*fer 14

恕我直言,如果它需要点击数据库,那么拥有L2缓存是没有意义的.这正是整个缓存点,避免尽可能多地击中数据库.

AFAIK没有像你描述的那样实现缓存策略,但是NHibernate L2缓存是完全可插拔的,所以你可以实现它.但是,由于我上面提到的原因,我不会这样做.

如果除了NHibernate之外还有其他应用程序或其他DAL攻击同一个数据库,那么获取过时数据只是一个问题.如果是这种情况,您可以使用SysCache2实现,该实现在内部使用SqlCacheDependencies在基础表中的数据发生更改时使缓存区域无效.

如果它是在服务器场中运行的单个应用程序,请使用Velocity提供程序.

如果只有一个NHibernate应用程序实例命中数据库,那么任何缓存策略都可以,并且您不必担心会获得过时的数据.

也可以看看: