zoukankan      html  css  js  c++  java
  • NHibernate 二级缓存使用心得

    使用二级缓存的前置条件 

    你的NHibernate程序对数据库有独占的写访问权,其他的进程更新了数据库,NHibernate是不可能知道的。你操作数据库必需直接通过NHibernate,如果你调用存储过程,或者自己使用sql更新数据库,NHibernate也是不知道的。大批量更新和删除也是不更新二级缓存的

    在ERP系统里面,有一些基础信息,产品分类,仓库,供应商等信息是很少变化的。而这些信息在各个单据里都会用到。假如把这些数据缓存起来可以很好的提高性能。方法一是GetXXX的方法里面使用缓存Cache,然后自己管理缓存的过期时间,在新增或更新时去掉缓存。

    方法二是用Nhibernate的二级缓存,让它来帮你管理。 具体配置方法略过,园子里有详细的文章。

    在使用过程中发现,如果实体没有配置缓存,而查询方法用了.SetCacheable(true),这样在实体的列表页(例如订单)就会出现Select N+1的问题。 解决的方法是分开两个查询方法,不需要缓存的实体的查询方法不要.SetCacheable(true)

     如果受不了Nhibernate的诸多限制,那么还是自己在应用程序的层面上做缓存吧。 

    在越高的层面上做缓存,可以更有针对性,效果就会越好
  • 相关阅读:
    函数后面加const
    关于C++ const 的全面总结
    待下载的东西
    GDI与DC
    Windows GDI与DC
    认识句柄
    什么是客户区/非客户区
    OpenCV 2.4.8 +VS2010的开发环境配置
    对话框类的数据交换和检验
    怎么调处vs2010的MSDN帮助文档
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/Nhibernate_2nd_level_Cache.html
Copyright © 2011-2022 走看看