实际应用

为了适应新的需求,我将原先的一个系统的进行了结构的修改,将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已经是很老的技术了,已经过时了,我想这样的论断是很武断的,也是不负责任的。

转载于:https://www.cnblogs.com/jiezhi/archive/2005/01/06/87413.html

在实际项目中应用NHibernate相关推荐

  1. 如何在C#项目中使用NHibernate

    现代化大型项目通常使用独立的数据库来存储数据,其中以采用关系型数据库居多.用于开发项目的高级语言(C#.Java等)是面向对象的,而关系型数据库是基于关系的,两者之间的沟通需要一种转换,也就是对象/关 ...

  2. 在实际项目中如何应用门面模式(Facade)

          我选择在项目中采用Nhibernate+Spring.Net+Asp.Net + Jquery 来作为我的主要.Net技术,我的框架的设计借鉴了博客园博主 传说中的弘哥博主的大量的技术思路 ...

  3. ESFramewor使用技巧(2)-- 在插件中使用NHibernate

        我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大块,考虑每一块使用一个功能插件来完成.在这几个插件中,有个插件需要访问某个 ...

  4. 【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate

    ESFramewor使用技巧(2)-- 在插件中使用NHibernate     我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大 ...

  5. 在 .NET Core 应用中使用 NHibernate

    NHibernate 最近发布了 5.1.3 版本,  支持 .NET Standard 2.0 , 这意味着可以在 .NET Core 2.0 应用中使用, 本文就已 WebAPI 应用为例, 介绍 ...

  6. maven没有resource文件夹_maven项目中没有resource文件夹的问题

    之前使用eclipse创建maven项目,文件夹都是建好的,这几次创建,都没有resource文件夹,需要手动创建resource. 现象描述 在eclipse中,创建maven项目有两种方式: 一种 ...

  7. 关于在项目中使用开源项目的疑惑,恳请大家给点意见!

    最近公司准备建立一套标准并严格执行,涉及到搭建系统框架.建立标准内库.建立标准控件库-- 有同事建议采用一些开源的项目,诸如: 1.iBATISNet 2.Ajax.NET Professional ...

  8. 谈谈MVC项目中的缓存功能设计的相关问题

    今天这一篇文章我来谈一谈在MVC 3项目中的缓存功能,以及针对缓存的一些设计上的考量,给大家参考参考 前言 为什么需要讨论缓存?缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源 ...

  9. c# Winform中使用NHibernate的配置

    NHibernate知识要点记录 1.NHibernate的引用 1.1.关于NHibernate学习可以参考的几个网址 1.2.在winform项目中引用NHibername 2.NHibernat ...

最新文章

  1. Partial Class部分类
  2. 5个基本概念,从统计学到机器学习
  3. Entity Framework Core介绍(1)
  4. boost::uuid::nil_generator相关的测试程序
  5. java返回属性_java – 根据对象属性确定哪个枚举返回
  6. python android 库_Python库
  7. 【剑指offer - C++/Java】10、矩形覆盖
  8. MYSQL Training: MySQL I
  9. php生成pem文件怎么打开,iOS推送证书生成pem文件(详细步骤)
  10. 手机 html宽度超出屏幕,解决华为手机用rem单位,内容超出屏幕宽度问题
  11. aspose-word主要标签结构图和标签详细作用
  12. 中国工商银行科技岗面试
  13. 购买成功订单详情html,订单成功页面功能实现
  14. 百度地图迁徙大数据_百度地图大数据看十一:各地商圈出现“红色拥堵”游乐场迎来“高光时刻”...
  15. 南京信息工程大学python期末考试_南京信息工程大学的雷丁学院怎么样?
  16. js 小写金额转大写
  17. Linux 云服务器aircrack-ng后台跑包并用邮件发送结果
  18. Spring Security 如何防止 Session Fixation 攻击
  19. python爬虫项目-优美图库
  20. 10g ASM下加控制文件 .

热门文章

  1. nginx 配置路由
  2. CentOS7下安装MySQL5.7安装与配置(YUM)
  3. Java基础(二):基本数据类型和变量类型
  4. Oracle Sharding
  5. TensorBoard:图形可视化
  6. 【matlab】matalb生成dll给Cpp用
  7. 【原创】Oracle RAC原理和安装
  8. python连接sql_Python连接DB2数据库
  9. Windows下使用pthread
  10. php php_strip_whitespace,php strip_whitespace函数怎么用