NHibernate系列文章一:NHibernate介绍
摘要
NHibernate是一个成熟的开源的面向对象的.net映射框架。大量的实际项目中正在使用该框架。他是建立在ADO.Net基础之上。目前的版本是NHibernate 4.0.4。本系列文章都是基于NHibernate 4.0版本。
1. 什么是ORM?
ORM指Object Relational Mapping。他是一种让你可以在面向对象和关系数据库之间互相映射的技术。
现实世界中,每个事物都是对象。我们称具有自己数据属性的事物为对象。
关系世界都是以集合为基础的表和数据行记录。这不同于面向对象世界。
在面向对象的世界里,我们使用单向关联。然而,在关系世界里,我们使用外键作为双向关联。
面向对象有继承的概念。例如,车辆类有很多继承类,小汽车是一种车辆,跑车也是一种车辆。这种都是继承关系。
在关系世界里,没有继承的关系。
ORM是对象世界和关系世界的一座桥梁,通过映射关系,简化了大量操作数据库的代码。
NHibernate是一个ORM的工具。
2. NHibernate架构

- NHibernate在应用程序中充当数据访问层
- 将关系数据库映射成应用程序中的持久化对象
- 使用app.config作为数据库配置文件(数据库连接,日志等)
- 使用xml mappings文件作为数据库映射配置文件(也有支持其他映射方法:属性映射、Fluent Mapping、Auto-Mapping)
3. NHibernate与其Entity Framework框架比较
- NHibernate提供二级缓存
- NHibernate支持字典数据类型
- NHibernate支持Batch Update/Insert优化
- NHibernate支持更多种类数据库,支持SQL Server, Oracle, DB2, Firebird, MySQL, PostgreSQL, SQL Lite, 支持ODBC and OLEDB drivers。Entity Framework主要支持SQL Server数据库
- NHibernate支持更好的并发访问(乐观并发控制)
- NHibernate支持多样的查询方式,HQL、Critirial、Linq Query、Query Over和SQL Query
本系列文章主要参考资料:
《Nhibernate Tutorial》这本书比较浅显易懂,适合入门
《NHibernate 3.0 Beginner Guid》入门书籍
《Learning NHibernate 4》这本书适合进阶读者
NHibernate系列文章一:NHibernate介绍的更多相关文章
- NHibernate系列文章二十七:NHibernate Mapping之Fluent Mapping基础(附程序下载)
摘要 从这一节起,介绍NHibernate Mapping的内容.前面文章都是使用的NHibernate XML Mapping.NHibernate XML Mapping是NHibernate最早 ...
- NHibernate系列文章十五:NHibernate组件
摘要 前面文章介绍了NHibernate对简单.net数据类型的映射对照表.NHibernate也可以映射复杂数据类型,这里介绍通过组件映射NHibernate值对象. 1. NHibernate引用 ...
- NHibernate系列文章九:NHibernate对象二级缓存上
摘要 NHibernate的二级缓存由SessionFactory管理,由所有Session共享. NHibernate缓存读取顺序: 首先从一级缓存中读取,如果一级缓存对象存在,则读取一级缓存对象并 ...
- NHibernate系列文章十一:NHibernate并发控制
摘要 在同一时刻数据访问量和更新次数比较大的系统中,产生了数据的并发访问问题.并发访问使得在这样的环境中,所有用户(程序.实际用户.进程.线程等)的操作不产生负面问题. 如果不使用并发,在两个用户同时 ...
- NHibernate系列文章目录
第一章:NHibernate基础 NHibernate介绍 第一个NHibernate工程 简单的增删改查询 运行时监控 NHibernate配置 数据类型映射 Get/Load方法 NHiberna ...
- NHibernate系列文章十:NHibernate对象二级缓存下
摘要 上一节对NHibernate二级缓存做了简单介绍,NHibernate二级缓存是由SessionFactory管理的,所有Session共享.这一节介绍二级缓存其他两个方面:二级缓存查询和二级缓 ...
- NHibernate系列文章二十一:延迟加载
摘要 NHibernate的延迟加载机制是很重要的内容.通过关系映射将数据库表之间的关系映射成对象之间的关系,如果没有延迟加载机制,从主表的一个对象的查询将直接查询出所有与该对象关联的其他对象,如果关 ...
- 一、VUE项目BaseCms系列文章:项目介绍与环境配置
一.项目效果图预览: 二.项目介绍 基于 elementui 写一个自己的管理后台.这个系列文章的目的就是记录自己搭建整个管理后台的过程,希望能帮助到那些入门 vue + elementui 开发的小 ...
- NHibernate系列文章二十八:NHibernate Mapping之Auto Mapping(附程序下载)
摘要 上一篇文章介绍了Fluent NHibernate基础知识.但是,Fluent NHibernate提供了一种更方便的Mapping方法称为Auto Mapping.只需在代码中定义一些Conv ...
随机推荐
- docker 源码分析 一(基于1.8.2版本),docker daemon启动过程;
最近在研究golang,也学习一下比较火的开源项目docker的源代码,国内比较出名的docker源码分析是孙宏亮大牛写的一系列文章,但是基于的docker版本有点老:索性自己就git 了一下最新的代 ...
- Jdk内置性能测试工具的介绍
(一) JConsole JConsole使用JVM的可扩展性Java管理扩展(JMX)工具来提供关于运行于Java平台的应用程序的性能和资源消耗的信息. 在J2SE 5.0软件中,你需要启动使用-D ...
- php get_magic_quotes_gpc()函数用法介绍
magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post.get.cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊 ...
- php轮流排序,每隔一定的时间轮流进行位置排序,轮询的排行榜:function dataPollingInterval()
/* * @名称: php ,对数组每隔一定的时间(自设定时间)来轮流进行位置排序,轮询的排行榜. 精确到指定的秒 或 分钟 或 小时 或 天 ,对数据列表进行轮排. * @参数: (array)$l ...
- IOS UIWebView引用外部CSS样式(转载)
首先,将要引用的CSS样式导入到工程文件,然后我们可以自己拼装一个网页并引用这个样式,具体代码实现如下: -(void)viewDidLoad { [super viewDidLoad]; NSStr ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- MySQL安装及主从配置
系统环境:CentOS release 6.5 (Final)(最小化安装) MySQL版本:mysql-5.6.12 Cmake版本:cmake-2.8.4 说明:安装mysql先安装cmake(原 ...
- mysql 把文件中的sql语句导入到mysql中
mysql -uroot -proot -Dcollege</home/wwwroot/default/data/xlxxb_2014-10-16.txt;
- linux之"server" directive is not allowed here in
配置完rewrite之后重启nginx发现如下错误 "server" directive is not allowed here in* 原因是因为 外部配置的simple.con ...
- [hdu 3376]Matrix Again
这题就是真正的费用流了,用 大屁 就算不超时,你也有个 CE :数组 so large 拆点,费用取反,最大费用最大流即可了喵~ 不过似乎这题很不兼容 dijkstra 的样子 就算用 spfa 重赋 ...