array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 111string(0) "" int(1) int(10) int(70) int(8640000) string(13) "likecs_art_db" array(1) { ["query"]=> array(1) { ["match_all"]=> object(stdClass)#28 (0) { } } } array(1) { ["createtime.keyword"]=> array(1) { ["order"]=> string(4) "desc" } } int(10) int(0) int(8640000) array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 在实际项目中应用NHibernate - 爱码网

实际应用

为了适应新的需求,我将原先的一个系统的进行了结构的修改,将NHibernate加入到项目中,改变过去每个人都要写大量数据访问代码的状况。当然使用NHibernate是有一定风险的,而且还有大牛猛烈批评过NHibernate,说其远远没有达到成熟的地步,不能胜任24*7的不间断服务的任务。但就我的使用来看,还基本没有出现什么问题,毕竟我不指望NHibernate能做任何事情,它只是一个ORM工具而已,只要它能帮我较好地完成CRUD就足够了。在参考了很多资料(包括张老三的飞鹰的Justin Gehtland的文章,还有MSDN上的文章《设计数据层组件并在层间传递数据》 《应用程序基础体系结构 MSA 企业设计》)后,根据自己项目的具体情况,采取了如下的结构:

WebUI ——》逻辑层——》数据访问层 ——》DB

    |-----------------------------------|

逻辑层中是很多个业务组件,而数据访问层中包括“业务实体(还有xml配置文件)”、“数据访问逻辑组件”、“数据访问助手”和“NHibernate”,之所以将业务实体放在DAL中是参考了《设计数据层组件并在层间传递数据》,将业务实体在各个层中进行传递。“数据访问逻辑组件”其实就是一个接口和一个实现类,类似飞鹰的EntityControl,数据访问助手是以前的项目就有的,保留了下来。

WebUI中使用javascript来调用WebService(就是使用了WebService Behavior),WebService再调用逻辑层中的业务组件。这么做是因为我们的项目中使用的是XML+XSL格式化数据显示的方式。

体会

使用ORM可以减少很多工作量,特别是再结合使用代码生成器后,它能带给我们实实在在的好处。现在涌现了很多ORM工具,NHibernate只是其中之一,有一些需要付费的ORM工具中,不乏优秀之作。我看到有人说ORM已经是很老的技术了,已经过时了,我想这样的论断是很武断的,也是不负责任的。

 

相关文章: