什么是?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。