NHibernate概括
什么是?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概括的更多相关文章
- NHibernate从入门到精通系列(1)——NHibernate概括
内容摘要 NHibernate简介 ORM简介 NHibernate优缺点 一.NHibernate简介 什么是?NHibernate?NHibernate是一个面向.NET环境的对象/关系数据库映射 ...
- 下一个系列学习列表Spring.net+NHibernate+MVC
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo 刘冬.NET 2011-08-19 ...
- LSJ_NHibernate第一章 NHibernate介绍
前言: 说起NHibernate网上资料真不少,但用的人却并不多,说起java的SSH框架大家可能就知道了,这里的H指的就是Hibernate,一款好用的ORM框架,在.net重写了这款好用的框架,名 ...
- 【转】NHibernate入门教程
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo 摘要: 热衷于开源框架探索的我发现A ...
- NHibernate——基本映射(5)
一.映射定义概括 1.1 映射定义(Mapping declaration) 对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的.这个映射文档被设计为易读的,并且可以手工 ...
- Nhibernate的Session管理
参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...
- "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案
今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...
- nhibernate连接11g数据库
我框架的数据映射用 nhibernate连接多数据库,这次又增加了oracle11g,负责开发的同事始终连接不上,悲催的sharepoint调试是在不方便... 下面描述下问题的解决,细节问题有3个: ...
- 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...
随机推荐
- Golang-and-package-version-managment
参考文章 学习Golang之后对golang中的版本管理,包管理等机制一直没有很好的琢磨,偶然想起还是觉得很有必要进行归纳,包管理使用起来简单,无非就是install,uninstall,list等, ...
- tp框架,addAll方法报错,返回false
tp框架的批量添加addAll($data)方法很实用,但是注意,数据数组的数据结构要保持一致,不然会返回false.
- 【codeforces 794B】Cutting Carrot
[题目链接]:http://codeforces.com/contest/794/problem/B [题意] 给你一个等腰三角形; 它的底边为1; 高为h; 要求你把这个等腰三角形分成n份面积相等的 ...
- Java String.replaceAll()方法
声明 以下是java.lang.String.replaceAll()方法的声明 public String replaceAll(String regex, String replacement) ...
- java内存管理之垃圾回收及JVM调优
GC(garbage Collector 垃圾收集器)作用:a.内存的动态分配:b.垃圾回收注:Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配. 一.垃圾标记 程序计数器.Jav ...
- Docker可视化管理工具对比(DockerUI、Shipyard、Rancher、Portainer)
1.前言 谈及docker,避免不了需要熟练的记住好多命令及其用法,对于熟悉shell.技术开发人员而言,还是可以接受的,熟练之后,命令行毕竟是很方便的,便于操作及脚本化.但对于命令行过敏.非技术人员 ...
- AJAX核心--XMLHttpRequest五步法
引言: AJAX=异步Javascript + XML,AJAX是一种用于创建高速动态网页的技术. 开门见山: 解读:AJAX使用XHTML和CSS为网页表示.DOM动态显示和交互,XML进行数据交换 ...
- java.lang.ClassNotFoundException: org.jaxen.JaxenException
java.lang.ClassNotFoundException: org.jaxen.JaxenException java.lang.ClassNotFoundException: org.jax ...
- java结合jQuery.ajax实现左右菜单联动刷新列表内容
http://域名/一级菜单ID-二级菜单ID/ 用这种URL请求页面,出现如图所看到的内容: 该页面包括四部分,顶部文件夹+左側菜单+右側菜单+右下側数据列表. 左側菜单包括一级菜单和二级菜单,点击 ...
- 机器翻译引擎的基本原理 ——LSTM
机器翻译引擎的基本原理 摘自:infoq 谷歌机器翻译 Zero-shot:零次 Training:训练 Google Neural Machine Translation:谷歌神经机器翻译 我们每 ...