• NHibernate 二级缓存使用心得


    使用二级缓存的前置条件 

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

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

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

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

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

    在越高的层面上做缓存,可以更有针对性,效果就会越好
  • 相关阅读:
    面试技巧
    [CODEVS1116]四色问题
    [CODEVS1216]跳马问题
    [CODEVS1295]N皇后(位运算+搜索)
    [CODEVS1037]取数游戏
    [CODEVS1048]石子归并
    [NOIP2012]同余方程
    C++深入理解虚函数
    Attention Model
    faster-rcnn系列原理介绍及概念讲解
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/Nhibernate_2nd_level_Cache.html
Copyright © 2020-2023  润新知