使用NHibernate中的几个小问题

最近在用 NHibernate(NHibernate-1.2.1.GA) 作为 DAL 开发一个小项目,自己遇到一些小的问题,在这里记录一下,以作备忘。

1.如果用自动加载.hbm.xml文件的方法配置Configuration对象,则一定要把.hbm.xml文件的“生成操作”设置为“嵌入的资源”。虽然之前遇到过,但这次改了架构,又忘了这个这个最容易忽略的地方。(害我多花了两分钟,找出这个问题)

2.这个项目中,我将 Model,IDAL,NHibernateDAL 层独立出来,曾出现 "NHibernate could not instantiate cacheprovider" 的异常,后来调试发现 InnerException 竟然是说找不到dll程序集,后来将表现层添加了 NHibernate.Caches.SysCache 的引用,问题解决。(也可以采用另一个缓存程序集)。
由此可猜测,缓存不是在 DAL 层,而是在表现层完成的;这当然也是符合逻辑的,如果还需要表现层向下通信以实现缓存的话,那效率肯定会打折扣。

3. 关于 ISession.Load<T>(object id) 和 ISession.Get<T>(object id),二者的区别体现在对二级缓存的利用上。之前使用时没出问题也就没特别注意,这次调试时每次Load的数据都是和数据库中不一致的,后来查了些资料,发现前者对二级缓存利用的更加充分,以致于关闭程序之后再重新打开时,它还能读取上一次运行时的缓存。这个小问题使我花费的时间最长。

今天先记到这里,以后再补充更详细的经验。

posted on 2007-12-27 16:13  _煒  阅读(174)  评论(0)    收藏  举报

导航