zoukankan      html  css  js  c++  java
  • 【转】NHibernate入门教程

    摘要: 热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力。由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI。它有完整的demo和强大AIP手册,使我在开发过程中得心应手。以下是这篇博文Demo程序的演示效果:  解决方案如图1所示图1  Domain:领域模型  Dao:持久层  Service:服务层  ...阅读全文
    posted @ 2011-08-19 01:53 刘冬.NET 阅读(40176) | 评论 (150) 编辑
    摘要: 内容摘要 单向多对多关联映射 双向多对多关联映射 一、单向多对多关联映射 1.1 多对多关联映射描述 众所周知,持久化类的有三种对应关系:“一对一”、“一对多(多对一)”和“多对多”。在项目开发过程中,我们接触过权限系统。而权限系统中,“用户”和“角色”的对应关系往往就是“多对多”。 让我们看一下“多对多”的数据,如图1.1.1所示:图1.1.1 从数据中,我们能够观察到:多个用户(User)对应多个角色(Role)。构造“多对多”的关联关系,我们不仅需要用户(User)表和角色(Role)表,还需要用户和角色的关系表。通过这三张表的关系构造了“多对多”的关联关系。 让我们看一下代码: pu.阅读全文
    posted @ 2011-03-04 00:26 刘冬.NET 阅读(8042) | 评论 (32) 编辑
    摘要: 内容摘要 单向关联映射 双向关联映射 一、单向关联映射 1.1 单向关联映射的描述 让我们回顾一下之前讲的《多对一关联映射》,如图1.1.1所示,其实“一对多”关联映射就是“多对一”关联映射相反的映射。 图1.1.1 至于“一对多”单向关联映射的代码如下:publicclassStudent{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}}publicclassClass{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}publicvirt.阅读全文
    posted @ 2011-03-03 15:36 刘冬.NET 阅读(6675) | 评论 (7) 编辑
    摘要: 内容摘要 单向主键关联映射 双向主键关联映射 唯一外键关联映射 NHibernate的一对一关联映射有三种,单向主键关联映射、双向主键关联映射、唯一外键关联映射。 一、单向主键关联映射 我们模拟一个现实情况:学生(Student)和家庭(Family)的关系。在中国,目前实行计划生育,一个家庭只有一个孩子,孩子上学后就成为了学生。学生和家庭的关系可以认为是一对一的。 让我们看一下“一对一”的表结构,如图1.1所示:图1.1 让我们看一下“一对一”的实体类和映射文件: publicclassStudent{publicvirtualint?ID{get;set;}publicvirtualst.阅读全文
    posted @ 2011-02-25 01:02 刘冬.NET 阅读(8068) | 评论 (21) 编辑
    摘要: 内容摘要 多对一关联映射概括 多对一关联映射插入和查询 多对一关联映配置介绍 一、多对一关联映射概括 关联关系是实体类与实体类之间的结构关系,分别为“多对一”、“一对一”、“多对多”。然而“多对一”是怎样描述的呢?让我们参考图1.1所示: 图1.1 学生表“T_Student”有两条记录,它们分别对应了班级表“T_Class”的主键值为“1”的同一条记录。所以这就是“多对一”的使用情景。 让我们看一下“多对一”持久化类的结构: publicclassClass{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}}pub.阅读全文
    posted @ 2011-02-24 11:12 刘冬.NET 阅读(7974) | 评论 (18) 编辑
    摘要: 内容摘要 映射定义概括 基本映射常用标签 NHibernate的类型 一、映射定义概括 1.1 映射定义(Mapping declaration) 对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的,并且可以手工修改。映射语言是以对象为中心的, 意味着映射是按照持久化类的定义来创建的,而非表的定义。 让我们打开上节课的映射例子: Product.hbm.xml Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight.阅读全文
    posted @ 2011-02-24 00:21 刘冬.NET 阅读(7725) | 评论 (14) 编辑
    摘要: 内容摘要    持久化类    持久化生命周期中的回调    合法性验证回调    一、持久化类(Persistent Classes)      1.1 什么是持久化类  回答这个问题之前先回答什么是持久化。所谓的持久化就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。然而持久化类就是持久化数据的载体,在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的Customer和Order) 类就是持久化类。不能认为所有的持久化类的实例都是持久的状态——一个实例的状态也可能 是瞬时的或脱管的。 如果这些持久化类遵循一些简单的规则,NHiberna阅读全文
    posted @ 2011-02-18 02:30 刘冬.NET 阅读(6670) | 评论 (21) 编辑
    摘要: 内容摘要    持久对象的状态的概念    持久对象的状态Demo  一、持久对象的状态的概念    在NHibernate中有三种状态,对它的深入理解,才能更好的理解NHibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于NHibernate和SQL的关系有更好的理解;对于理解需要持久化的.NET对象,在它的生命周期中三种状态之间的互相转化有很大帮助。如图1.1所示图1....阅读全文
    posted @ 2011-02-17 01:18 刘冬.NET 阅读(8774) | 评论 (27) 编辑
    摘要: 内容摘要    准备工作    开发流程    程序开发  一、准备工作    1.1开发环境       开发工具:VS2008以上,我使用的是VS2010      数据库:任意关系型数据库,我使用的是SQL Server 2005 Express    1.2测试环境      nunit 2.5.7  二、开发流程  NHibernate程序的开发流程是:    (1).编写领域类与映射文...阅读全文
    posted @ 2011-02-16 00:21 刘冬.NET 阅读(15940) | 评论 (68) 编辑
    摘要: 内容摘要    NHibernate的开发环境    NHibernate的结构体系      NHibernate的配置  一、NHibernate的开发环境  NHibernate的英文官方网站为:http://nhforge.org/  NHibernate目前最新的版本是3.0.0.GA,其下载地址是:http://sourceforge.net/projects/nhibernate/f...阅读全文
    posted @ 2011-02-15 00:23 刘冬.NET 阅读(12115) | 评论 (13) 编辑
    摘要: 内容摘要    NHibernate简介    ORM简介      NHibernate优缺点  一、NHibernate简介  什么是?NHibernate?NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...阅读全文
    posted @ 2011-02-14 02:04 刘冬.NET 阅读(15313) | 评论 (26) 编辑
    摘要: 最近由于工作忙的原因,博客更新的比较慢,在此给园子里的朋友说声抱歉。于是,我利用周末的时间写了一份Spring.NET架构的综合应用,希望这样的实用型架构能受到大家的欢迎。  一、概括  此Demo使用的开发工具是:VS2010,数据库任意,Silvelright版本是4.0。Demo分为三层(Tier),数据库,服务器端,客户端。其中,服务器端又分为三层(Layer),持久层,服务层,门面层。WCF以Windows服务作为宿主,客户端使用Silverlight运行浏览器之外。图1  图1是解决方案中包含的项目。其中,Server文件夹下是服务器端的代码,Host文件夹下是服务器端的Windo阅读全文
    posted @ 2010-10-16 14:03 刘冬.NET 阅读(16567) | 评论 (57) 编辑
    摘要: 之前实现的NHibernate分布式事务,在WCF环境下遇到的一个难点,是NHibernate的Session管理。然而在我查看log4net生成的调试日志时候惊奇的发现,原来NHibernate的Session不一定需要SessionScope来管理。在遇到事务的时候能自动创建一个Session,在事务关闭的时候能自动关闭Session。SessionScope仅仅是把自动创建的Session合...阅读全文
    posted @ 2010-08-12 13:45 刘冬.NET 阅读(4680) | 评论 (10) 编辑
    摘要: 上篇,我们已实现了在同一应用程序下的分布式事务——即多Dao层+同Service层,每个Dao对应一个数据库,一个Service调用多个Dao。但是在一些特定的子系统较多的项目中,开发人员是无法访问到某个子系统的数据库,这就意味着不能通过增加Dao层来实现分布式事务。正如一个银行的软件系统,记录了客户的账户信息和存款金额,北京的分公司和上海的分公司分别有自己的数据库和软件系...阅读全文
    posted @ 2010-07-30 14:44 刘冬.NET 阅读(4022) | 评论 (8) 编辑
    摘要: 在使用NHibernate作为持久层框架时,多数据库操作是一个比较难解决的问题。并且很多网友在给我发的eamil中经常谈到此问题。由于NHibernate是一种框架,不能像ADO.NET那样直接用SQL语句操作数据库,在动态改变DbConnection时比较麻烦,而且NHibernate目前并不完全支持多数据库,所以实现多数据库的操作是个棘手的问题。  回想一下,在使用ADO.NET实现多数据库的...阅读全文
    posted @ 2010-07-29 03:09 刘冬.NET 阅读(5514) | 评论 (16) 编辑
    摘要: 什么是持久层?先解释什么是持久,英文persistence,将内存中的数据固化,保持在物理储存设备中。然而在企业应用中,往往通过关系型数据库来完成这一过程。那么持久层的定义是:相对于三层架构中的表示层、业务层而言,专门负责持久化数据的独立领域。设计模式中的“单一职责”原则确定了分层的目的,说白了,持久层就是专门与数据库打交道的。如图1所示图1  在PetShop4.0中的D...阅读全文
    posted @ 2010-06-19 22:08 刘冬.NET 阅读(6271) | 评论 (15) 编辑
    摘要: 什么是领域模型?领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。  当我们不再对一个新系统进行数据库提炼时,取而代之的时面向对象的模型提炼。我们必须大刀阔斧地对业务领域进行细分,将一个复杂的业务领域划分为多个小的子领域,同时还必须分清重点和次要部分,抓住核心领域概念,实...阅读全文
    posted @ 2010-06-18 01:41 刘冬.NET 阅读(5986) | 评论 (10) 编辑
    摘要: PetShop4.0是微软针对.NET企业系统推出的一个范例。业界有许多.NET与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,而且有很多可以借鉴之处。PetShop是一个...阅读全文
    posted @ 2010-06-17 12:42 刘冬.NET 阅读(11204) | 评论 (49) 编辑
    摘要: 针对大型系统,往往采用Oracle数据库。这是因为在大数据量的情况下Oracle的优势比较明显,而且能够部署到非Windows环境下,从而弥补.NET程序跨平台的缺点。但是使用NHibernate访问Oracle和访问SQL Server相比来说要略微复杂。  在使用NHibernate访问Oracle的过程中,我们需要以下几个步骤:  1.下载并安装Oracle客户端http://www.ora...阅读全文
    posted @ 2010-05-25 21:21 刘冬.NET 阅读(6252) | 评论 (15) 编辑
    摘要: 什么是二级缓存?  NHibernate的Session提供了一级缓存。每个Session,对同一个id进行两次Load,不会发送两条SQL语句给数据库,但是Session一但关闭,一级缓存也就失效了。   与Session相对的是,SessionFactory也提供了相应的缓存机制。  SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存。  SessionFact...阅读全文
    posted @ 2010-05-19 03:46 刘冬.NET 阅读(3205) | 评论 (9) 编辑
    摘要: 目录  前言  Spring.NET学习笔记——前言    第一阶段:控制反转与依赖注入IoC&DI  Spring.NET学习笔记1——控制反转(基础篇) Level 200  Spring.NET学习笔记2——环境搭建(基础篇) Level 200  Spring.NET学习笔记3——实现一...阅读全文
    posted @ 2009-11-20 12:36 刘冬.NET 阅读(41762) | 评论 (43) 编辑
    摘要: ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架。MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。  今天带给大家的就是期待以久的ASP.NET MVC与Spring.NET和NHibernate的组合,视...阅读全文
    posted @ 2009-11-19 05:09 刘冬.NET 阅读(9923) | 评论 (43) 编辑
    摘要: NHibernate是一个基于.Net的针对关系型数据库的对象持久化(ORM)类库。NHibernate来源于非常优秀的基于Java的NHibernate关系型持久化工具。从数据库底NHibernate来持久化你的.Net 对象到关系型数据库。NHibernate为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernate自动产生SQL语句,并确保对象提交到...阅读全文
    posted @ 2009-11-18 04:36 刘冬.NET 阅读(15565) | 评论 (39) 编辑
    摘要: 今晚看了几篇项目应用的博客感受很深,晚上怎么都睡不着觉。于是乎,下面的博客诞生了 ^-^。  我在想是不是要把我熟悉的Spring.NET框架与别的框架或技术结合起来。由于心血来潮,斗胆在园子里这么多大牛的面前班门弄斧了。长话短说,下面是我项目中用到的技术(图1):1.JQuery的FlexiGrid插件2.ASP.NET MVC3.NVelocity目前没有与MVC结合,只是用来简单的替换模板4...阅读全文
    posted @ 2009-11-10 07:28 刘冬.NET 阅读(20863) | 评论 (52) 编辑
    摘要: 有人问过我一个问题,既然用了NHibernate还有必要用Linq吗?就这个问题,我回答下列几点:  1.Linq to NHibernate有VS的IDE提示,编译器可以帮助我提示出错误。  2.Linq to NHibernate最大限度的帮我们优化SQL语句,尤其是匿名类的查询语句和聚合函数的查询。  3.可以结合Linq加NHibernate各自的延迟加载特性,帮我们在必要的时候生成特定的...阅读全文
    posted @ 2009-10-18 23:48 刘冬.NET 阅读(6264) | 评论 (9) 编辑
    摘要: 在微软发布C# 3.0后, LINQ在项目中发挥了重要作用。作为3.0语言身份的象征之一,学习LINQ有为重要。而NHibernate作为运用最广的ORM框架之一,在大型项目中广受开发人员的青睐。前不久,NHibernate Forge宣布NHiberante Linq 1.0正式发布了(参考)。Linq to NHibernate有机的在NHibernate结合了Linq的查询功能,良好的把LI...阅读全文
    posted @ 2009-10-16 02:16 刘冬.NET 阅读(7374) | 评论 (38) 编辑
  • 相关阅读:
    “耐撕”团队 2016.3.25 站立会议
    “耐撕”团队 2016.03.24 站立会议
    “耐撕”团队 2016.3.22 站立会议
    windows环境下的git安装及使用
    词频统计(三)
    第二周作业
    Unity之GUI控件
    Lua的协同程序(coroutine)
    Lua与C++的交互
    Lua的元方法__newindex元方法
  • 原文地址:https://www.cnblogs.com/280850911/p/3197102.html
Copyright © 2011-2022 走看看