一、关于延时加载
Nhibernate默认是开了延时加载的,若设置关闭延时加载,关联的数据会立即加载。
如上图所示,若开了延时加载,获取Equipment对象时,不能直接通过该对象获取关联的Communicator对象的属性,若没有开延时加载则可以直接获取。在开启延时加载的情况下,想要通过Equipment对象获取关联的Communicator对象的属性,可以在查询语句中通过join fetch关键字获取。语句如下所示:
二、关于Nhibernate二级缓存
为提高性能,在使用Nhibernate时,可以使用二级缓存,将从数据库中查找到的数据保存到内存中。数据第二次查找时先从缓存中查找,找不到时才到数据库中查找。在hibernate.cfg.xml配置文件中,配置二级缓存,具体配置如图所示:
使用第三方程序提供二级缓存(memcached.exe),若配置并启用了二级缓存,但是没有安装二级缓存,使用Nhibernate Profiler工具可以捕获到警告:Warn: could nor save...(提示保存二级缓存失败)。Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。