什么是?NHibernate?NHibernate是一个面向.NET环境的对象/关系数据库映射工具。

对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

 什么是ORM?对象-关系映射(Object/Relation Mapping。简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法。关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此。对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

  

  面向对象是从软件project基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的。两套理论存在显著的差别。

为了解决这个不匹配的现象,对象关系映射技术应运而生。   

NHiberante的优缺点

长处

  (1).面向对象:NHiberante的使用时仅仅须要操纵对象。使开发更对象化,抛弃了数据库中心的思想,全然的面向对象思想。

  (2).透明持久化:带有持久化状态的、具有业务功能的单线程对象,此对象生存期非常短。这些对象可能是普通的POCO。这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(只一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态。这样就可被应用程序的不论什么层自由使用。

(比如,用作跟表示层打交道的传输数据对象。

  (3).它没有侵入性,即所谓的轻量级框架。

正由于它具有透明持久化的长处。它才没有侵入性。才是一个轻量级框架。

恒定一个框架为重量级、还是轻量级,是依据其侵入性而定夺的。而NHibernate就是一个轻量级ORM框架。

  (4).较好的移植性:支持多种数据库。便于数据库的迁移。

  (5).缓存机制:提供一、二级缓存和查询缓存。

  (6).开发效率:众所周知,使用NHibernate能够简化程序开发,从而达到高速开发的目的。作为软件公司,项目管理的关键就是控制开发成本。正由于使用NHibernate后所写的代码量降低了,相对于原先使用“SqlHelper、DAL、BLL”开发程序的项目周期缩短了,成本就降低了。

缺点

  (1).内存消耗:直接使用“SqlHelper、DAL、BLL”无疑是最省内存的。使用NHibernate后。内存开销比較大。这点是毋庸置疑的。

  (2).批量数据库的处理:因为NHibernate是基于面向对象的ORM框架。处理数据库的方式是针对单个对象的。

对数据库的增、删、改都是正对一条记录而言。对于批量改动、删除数据。不适合用NHiberante。这也是全部OR框架弱点。其原因,我觉得是在于与缓存机制的冲突。

  (3).较多使用数据库特性时。也不适合使用NHiberante。

如数据库中大量的存储过程、触发器、特点的SQL语句。

  (4).表关系比較混乱时也不适合使用NHiberante。

NHibernate仅仅适合于表与表的关系比較明白的环境中。

如本应该建立外键的。没有建立外键。这时使用NHiberante不仅没有降低工作量。反而添加了工作量。

  (5).学习成本:相对于NHibernate来说,使用“SqlHelper、DAL、BLL”操作数据库,学习成本比較低,并且上手非常快。使用NHibernate须要有一定OOP(面向对象编程)和OOD(面向对象设计)的基础。这对于基础薄弱的程序猿来说,从面向过程的编程到面向对象的编程。须要一定的投入;普通情况下须要学习1个月左右的时间才可以深入NHiberante。

NHibernate概括相关推荐

  1. 【转】NHibernate入门教程

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo 摘要: 热衷于开源框架探索的我发现A ...

  2. LSJ_NHibernate第一章 NHibernate介绍

    前言: 说起NHibernate网上资料真不少,但用的人却并不多,说起java的SSH框架大家可能就知道了,这里的H指的就是Hibernate,一款好用的ORM框架,在.net重写了这款好用的框架,名 ...

  3. NHibernate从入门到精通系列(7)——多对一关联映射

    内容摘要 多对一关联映射概括 多对一关联映射插入和查询 多对一关联映配置介绍 一.多对一关联映射概括 关联关系是实体类与实体类之间的结构关系,分别为"多对一"."一对一& ...

  4. Welcome to NHibernate

    Welcome to NHibernate Wiki extracted from the original blog post of Gabriel Schenker 假如你正在阅读这篇文章,我们假 ...

  5. Simple NHibernate Architecture[from]

    原文地址:http://www.codeproject.com/aspnet/NHibernateArchitecture.asp Download source - 2,523.7 KB Intro ...

  6. NHibernate初学体验记

    NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库.NHibernate 来源于优秀的基于Java的关系型持久化工具Hibernate.NHibernate持久化你的.Net ...

  7. ActiveRecordBase借助NHibernate的条件获取实体类对象

    ActiveRecordBase.FindAll() 函数其中有一个这样的版本的参数 ActiveRecordBase.FindAll(TargetType As System.Type,Orders ...

  8. 未能从程序集 XX加载类型XXX的错误解决方法(借以提醒NHibernate使用者)

    这是写.hbm.xml文件最容易犯的错误之一 首先,Class的Name属性必须是"完全限定类名,程序集名" 这里,例如 <class name="ibiz.cor ...

  9. ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL

    前面的两篇文章中.我们对NHibernate已经做了大致了解 <ORM利器:NHibernate(一)简单介绍>Nhibernate的作用:攻克了对象和数据库的转化问题 <ORM利器 ...

最新文章

  1. MySQL中exists与in的使用
  2. 题目1015:还是A+B
  3. Linux各版本完整发展图
  4. Ajax 基础——未完待续
  5. 20应用统计考研复试要点(part14)--应用多元分析
  6. 【各种信噪比联系与区别详解】实信号、复信号Es、N0、符号信噪比EsN0、带内信噪比、比特信噪比EbN0、SNR的含义及关系详解
  7. 2017百度之星初赛B场第一题Chess--简单杨辉三角问题
  8. 视频编码会议_我在编码事件和会议上进行了16次技术演讲。 这是我学到的。
  9. java中的关键事件是_java – 自定义关键事件
  10. C - 数据结构实验之栈与队列三:后缀式求值
  11. java 1.6 最大化_关于java:JDK 1.6和1.7中的新功能
  12. Java_基础—List集合存储学生对象并遍历
  13. adb工具包使用介绍 adb工具包安装使用方法
  14. pdf复制去掉换行符
  15. 热炉法则:规章制度面前人人平等 | 每天成就更大成功
  16. 基于canvas+uniapp的9宫格拼图游戏组件
  17. 区块链:“我还活在1994!”
  18. html中在图片上写文字,用HTML代码在图片上写字
  19. 被删短信通讯运营商仍保存半年
  20. JavaScript,要求求两个数的最大公约数(最大公因子)

热门文章

  1. UA SIE545 优化理论基础4 对偶理论简介6 求解对偶问题的梯度算法
  2. 超图桌面版新建一个简单三维数据集并发布
  3. C++ const成员Demo - Win32 版本
  4. 下载CentOS源码、Hyper-V虚拟机联网、拷贝文件到Hyper-V虚拟机中的Linux系统
  5. 图解Win32汇编字符串和Debug输出
  6. 图解weblogic安装
  7. Spring事务处理流程和原理(动脑学院笔记)
  8. 阻塞(block)/非阻塞(unblock) 同步(synchronization)/异步(asynchronization) 的区别
  9. .6-Vue源码之AST(2)
  10. [原]ubuntu14.04 网卡逻辑修改没有文件/etc/udev/rules.d/70-persistent-net.rules