【转】NHibernate⼊门教程
摘要: 热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给⼒。由于原先⼀直受Ext JS框架的licence所苦恼,于是痛下决⼼寻⼀个完全免费的js框架——easyUI。它有完整的demo和强⼤AIP⼿册,使我在开发过程中得⼼应⼿。以下是这篇博⽂Demo程序的演⽰效果: 解决⽅案如图1所⽰图1 Domain:领域模型 Dao:持久层 Service:服务层 ...
posted @ 刘冬.NET 阅读(40176) |
摘要: 内容摘要单向多对多关联映射双向多对多关联映射⼀、单向多对多关联映射 1.1 多对多关联映射描述众所周知,持久化类的有三种对应关系:“⼀对⼀”、“⼀对多(多对⼀)”和“多对多”。在项⽬开发过程中,我们接触过权限系统。⽽权限系统中,“⽤户”和“⾓⾊”的对应关系往往就是“多对多”。让我们看⼀下“多对多”的数据,如图1.1.1所⽰:图1.1.1 从数据中,我们能够观察到:多个⽤户(User)对应多个⾓⾊(Role)。构造“多对多”的关联关系,我们不仅需要⽤户(User)表和⾓⾊(Role)表,还需要⽤户和⾓⾊的关系表。通过这三张表的关系构造了“多对多”的关联关系。让我们看⼀下代码: pu.
posted @ 刘冬.NET 阅读(8042) |
摘要: 内容摘要单向关联映射双向关联映射⼀、单向关联映射 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 @ 刘冬.NET 阅读(6675) |
摘要: 内容摘要单向主键关联映射双向主键关联映射唯⼀外键关联映射 NHibernate的⼀对⼀关联映射有三种,单向主键关联映射、双向主键关联映射、唯⼀外键关联映射。⼀、单向主键关联映射我们模拟⼀个现实情况:学⽣(Student)和家庭(Family)的关系。在中国,⽬前实⾏计划⽣育,⼀个家庭只有⼀个孩⼦,孩⼦上学后就成为了学⽣。学⽣和家庭的关系可以认为是⼀对⼀的。让我们看⼀下“⼀对⼀”的表结构,如图1.1所⽰:图1.1 让我们看⼀下“⼀对⼀”的实体类和映射⽂件: publicclassStudent{publicvirtualint?ID{get;set;}publicvirtualst.
posted @ 刘冬.NET 阅读(8068) |
摘要: 内容摘要多对⼀关联映射概括多对⼀关联映射插⼊和查询多对⼀关联映配置介绍⼀、多对⼀关联映射概括关联关系是实体类与实体类之间的结构关系,分别为“多对⼀”、“⼀对⼀”、“多对多”。然⽽“多对⼀”是怎样描述的呢?让我们参考图1.1所⽰: 图1.1 学⽣表“T_Student”有两条记录,它们分别对应
了班级表“T_Class”的主键值为“1”的同⼀条记录。所以这就是“多对⼀”的使⽤情景。让我们看⼀下“多对⼀”持久化类的结构: publicclassClass{publicvirtualint?ID{get;set;}publicvirtualstringName{get;set;}}pub.
posted @ 刘冬.NET 阅读(7974) |
摘要: 内容摘要映射定义概括基本映射常⽤标签 NHibernate的类型⼀、映射定义概括 1.1 映射定义(Mapping declaration)对象和关系数据库之间的映射是⽤⼀个XML⽂档(XML document)来定义的。这个映射⽂档被设计为易读的,并且可以⼿⼯修改。映射语⾔是以对象为中⼼的,意味着映射是按照持久化类的定义来创建的,⽽⾮表的定义。让我们打开上节课的映射例⼦: l Code highlighting produced by Actipro CodeHighlighter (freeware)www.CodeHighlight.
posted @ 刘冬.NET 阅读(7725) |
摘要: 内容摘要 持久化类 持久化⽣命周期中的回调 合法性验证回调 ⼀、持久化类(Persistent Classes) 1.1 什么是持久化类 回答这个问题之前先回答什么是持久化。所谓的持久化就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。然⽽持久化类就是持久化数据的载体,在应⽤程序中,⽤来实现业务问题实体的(如,在电⼦商务应⽤程序中的Customer和Order)类就是持久化类。不能认为所有的持久化类的实例都是持久的状态——⼀个实例的状态也可能是瞬时的
或脱管的。如果这些持久化类遵循⼀些简单的规则,NHiberna
posted @ 刘冬.NET 阅读(6670) |
摘要: 内容摘要 持久对象的状态的概念 持久对象的状态Demo ⼀、持久对象的状态的概念 在NHibernate中有三种状态,对它的深⼊理解,才能更好的理解NHibernate的运⾏机理,刚开始不太注意这些概念,后来发现它是重要的。对于NHibernate和SQL的关系有更好的理解;对于理解需要持久化的.NET对象,在它的⽣命周期中三种状态之间的互相转化有很⼤帮助。如图1.1所⽰图1....
posted @ 刘冬.NET 阅读(8774) |
摘要: 内容摘要 准备⼯作 开发流程 程序开发 ⼀、准备⼯作 1.1开发环境 开发⼯具:VS2008以上,我使⽤的是VS2010 数据库:任意关系型数据库,我使⽤的是SQL Server 2005 Express 1.2测试环境 nunit 2.5.7 ⼆、开发流程 NHibernate程序的开发流程是: (1).编写领域类与映射⽂...
posted @ 刘冬.NET 阅读(15940) |
摘要: 内容摘要 NHibernate的开发环境 NHibernate的结构体系 NHibernate的配置 ⼀、NHibernate的开发环境 NHibernate的英⽂官⽅⽹站为:/ NHibernate⽬前最新的版
本是3.0.0.GA,其下载地址是:sourceforge/projects/
posted @ 刘冬.NET 阅读(12115) |
摘要: 内容摘要 NHibernate简介 ORM简介 NHibernate优缺点 ⼀、NHibernate简介 什么是?NHibernate?NHibernate是⼀个⾯向.NET环境的对象/关系数据库映射⼯具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表⽰⼀种技术,⽤来把对象模型表⽰的对象映射到基于SQL的关系模型数据结构中去。...
posted @ 刘冬.NET 阅读(15313) |
摘要: 最近由于⼯作忙的原因,博客更新的⽐较慢,在此给园⼦⾥的朋友说声抱歉。于是,我利⽤周末的时间写了⼀份Spring.NET架构的综合应⽤,希望这样的实⽤型架构能受到⼤家的欢迎。 ⼀、概括 此Demo使⽤的开发⼯具是:VS2010,数据库任意,Silvelright版本是4.0。Demo分为三层(Tier),数据库,服务器端,客户端。其中,服务器端⼜分为三层(Layer),持久层,服务层,门⾯层。WCF以Windows服务作为宿主,客户端使⽤Silverlight运⾏浏览器之外。图1 图1是解决⽅案中包含的项⽬。其中,Server⽂件夹下是服务器端的代码,Host⽂件夹下是服务器端的Windo
posted @ 刘冬.NET 阅读(16567) |
摘要: 之前实现的NHibernate分布式事务,在WCF环境下遇到的⼀个难点,是NHibernate的Session管理。然⽽在我查看log4net⽣成的调试⽇志时候惊奇的发现,原来NHibernate的Session不⼀定需要SessionScope来管理。在遇到事务的时候能⾃动创建⼀个Session,在事务关闭的时候能⾃动关闭Session。SessionScope仅仅是把⾃动创建的Session合...
posted @ 刘冬.NET 阅读(4680) |
摘要: 上篇,我们已实现了在同⼀应⽤程序下的分布式事务——即多Dao层+同Service层,每个Dao对应⼀个数据库,⼀个Service调⽤多个Dao。但是在⼀些特定的⼦系统较多的项⽬中,开发⼈员是⽆法访问到某个⼦系统的数据库,这就意味着不能通过增加Dao层来实现分布式事务。正如⼀个银⾏的软件系统,记录了客户的账户信息和存款⾦额,北京的分公司和上海的分公司分别有⾃⼰的数据库和软件系...
posted @ 刘冬.NET 阅读(4022) |
摘要: 在使⽤NHibernate作为持久层框架时,多数据库操作是⼀个⽐较难解决的问题。并且很多⽹友在给我发的eamil中经常谈到此问题。由于NHibernate是⼀种框架,不能像ADO.NET那样直接⽤SQL语句操作数据库,在动态改变DbConnection时⽐较⿇烦,⽽且NHibernate⽬前并不完全⽀持多数据库,所以实现多数据库的操作是个棘⼿的问题。 回想⼀下,在使⽤ADO.NET实现多数据库的...
posted @ 刘冬.NET 阅读(5514) |
摘要: 什么是持久层?先解释什么是持久,英⽂persistence,将内存中的数据固化,保持在物理储存设备中。然⽽在企业应⽤中,往往通过关系型数据库来完成这⼀过程。那么持久层的定义是:相对于三层架构中的表⽰层、业务层⽽⾔,专门负责持久化数据的独⽴领域。设计模式中的“单⼀职责”原则确定了分层的⽬的,说⽩了,持久层就是专门与数据库打交道的。如图1所⽰图1 在PetShop4.0中的D...
posted @ 刘冬.NET 阅读(6271) |
摘要: 什么是领域模型?领域模型是对领域内的概念类或现实世界中对象的可视化表⽰。⼜称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本⾝,发掘重要的业务领域概念,并建⽴业务领域概念之间的关系。 当我们不再对⼀个新系统进⾏数据库提炼时,取⽽代之的时⾯向对象的模型提炼。我们必须⼤⼑阔斧地对业务领域进⾏细分,将⼀个复杂的业务领域划分为多个⼩的⼦领域,同时还必须分清重点和次要部分,抓住核⼼领域概念,实...
posted @ 刘冬.NET 阅读(5986) |
摘要: PetShop4.0是微软针对.NET企业系统推出的⼀个范例。业界有许多.NET与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore⽽来。这种争论不可避免带有浓厚的商业⾊彩,对于我们开发
⼈员⽽⾔,没有必要过多关注。然⽽PetShop随着版本的不断更新,⾄现在基于.Net 2.0的PetShop4.0为⽌,整个设计逐渐变得成熟⽽优雅,⽽且有很多可以借鉴之处。PetShop是⼀个...
posted @ 刘冬.NET 阅读(11204) |
摘要: 针对⼤型系统,往往采⽤Oracle数据库。这是因为在⼤数据量的情况下Oracle的优势⽐较明显,⽽且能够部署到⾮Windows环境下,从⽽弥补.NET程序跨平台的缺点。但是使⽤NHibernate访问Oracle和访问SQL Server相⽐来说要略微复杂。 在使⽤NHibernate访问Oracle的过程中,我们需要以下⼏个步骤: 1.下载并安装Oracle客户端
posted @ 刘冬.NET 阅读(6252) |
摘要: 什么是⼆级缓存? NHibernate的Session提供了⼀级缓存。每个Session,对同⼀个id进⾏两次Load,不会发送两条SQL语句给数据库,但是Session⼀但关闭,⼀级缓存也就失效了。 与Session相对的是,SessionFactory也提供了相应的缓存机制。 SessionFactory缓存可以依据功能和⽬的的不同⽽划分为内置缓存和外置缓存。
posted @ 刘冬.NET 阅读(3205) |
摘要: ⽬录 前⾔ Spring.NET学习笔记——前⾔ 第⼀阶段:控制反转与依赖注⼊IoC&DI Spring.NE
T学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔记2——环境搭建(基础篇) Level 200 Spring.NET学习笔记3——实现⼀...
posted @ 刘冬.NET 阅读(41762) |
摘要: ASP.NET MVC Framework是微软官⽅提供的MVC模式编写ASP.NET Web应⽤程序的⼀个框架。MVC(Model-View-Controller)⽤于表⽰⼀种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。 今天带给⼤家的就是期待以久的ASP.NET MVC与Spring.NET和NHibernate的组合,视...
posted @ 刘冬.NET 阅读(9923) |
摘要: NHibernate是⼀个基于.Net的针对关系型数据库的对象持久化(ORM)类库。NHibernate来源于⾮常优秀的基于Java的NHibernate关系型持久化⼯具。从数据库底NHibernate来持久化你的.Net 对象到关系型数据库。NHibernate为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernate⾃动产⽣SQL语句,并确保对象提交到...
posted @ 刘冬.NET 阅读(15565) |
摘要: 今晚看了⼏篇项⽬应⽤的博客感受很深,晚上怎么都睡不着觉。于是乎,下⾯的博客诞⽣了 ^-^。
我在想是不是要把我熟悉的Spring.NET框架与别的框架或技术结合起来。由于⼼⾎来潮,⽃胆在园⼦⾥这么多⼤⽜的⾯前班门弄斧了。长话短说,下⾯是我项⽬中⽤到的技术(图1):1.JQuery的FlexiGrid插件2.ASP.NET MVC3.NVelocity⽬前没有与MVC结合,只是⽤来简单的替换模板4...
posted @ 刘冬.NET 阅读(20863) |
摘要: 有⼈问过我⼀个问题,既然⽤了NHibernate还有必要⽤Linq吗?就这个问题,我回答下列⼏点: 1.Linq to NHibernate有VS的IDE提⽰,编译器可以帮助我提⽰出错误。
2.Linq to NHibernate最⼤限度的帮我们优化SQL语句,尤其是匿名类的查询语句和聚合函数的查询。
3.可以结合Linq加NHibernate各⾃的延迟加载特性,帮我们在必要的时候⽣成特定的...
posted @ 刘冬.NET 阅读(6264) |
摘要: 在微软发布C# 3.0后, LINQ在项⽬中发挥了重要作⽤。作为3.0语⾔⾝份的象征之⼀,学习LINQ有为重要。⽽NHibernate作为运⽤最⼴的ORM框架之⼀,在⼤型项⽬中⼴受开发⼈员的青睐。前不久,NHibernate Forge宣布NHiberante Linq 1.0正式发布了(参考)。Linq to NHibernate有机的在NHibernate结合了Linq的查询功能,良好的把LI...
jquery是什么软件posted @ 刘冬.NET 阅读(7374) |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论