nhibernate的介绍

     2022-05-20     663

关键词:

1、介绍的内容

     1、感谢园友的文章支持 by 李永京 by wolfy

     2、Nhibernate的框架介绍

     3、Nhibernate的架构介绍

     4、Nhibernate映射方法介绍(该点自己也存在一定的疑问,如果有知道的园友请指正)

 

2、参考文章

     由于英语一向都不太好,虽然最近在改进ing,可是让我看英文的文档还是会存在一定的问题,所以这里非常感谢之前园友对NHibernate的研究并且记录,以下是我主要参考的两位园友的文章

     http://www.cnblogs.com/lyj/archive/2008/10/10/1308267.html     李永京大神的文章    

     http://www.cnblogs.com/wolf-sun/p/4138918.html                       wolfy的文章

3、项目准备

     VS2013、oracle11g、Nhibernate

4、Nhibernate的框架介绍

     NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

     在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦和浪费时间的。而NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET 数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。

  NHibernate的目标主要是用于与数据持久化相关的编程任务,能够使开发人员从原来枯燥的SQL语句的编写中解放出来,解放出来的精力可以让开发人员投入到业务逻辑的实现上。对于以数据为中心的程序,开发人员往往是在数据库中使用存储过程来实现商业逻辑,这种情况下NHibernate可能不是最好的解决方案,但对于那些基于.NET,并且能够实现OO业务模型和商业逻辑的中间层应用,NHibernate是最有用的。NHibernate可以帮助用户消除或者包装那些针对特定厂商的SQL代码,并且帮用户把结果集从表格式的表示形式转换成一系列的对象。  

      NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。NHibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具

5、Nhibernate的架构介绍(这块就直接copy 李永京大神的)

      你知道NHibernate到底什么样子?下面我摘取官方文档中的三幅不同的结构图稍做说明。

      第一幅图:NHibernate体系结构非常抽象的概览 

      技术分享

      这幅图展示了NHibernate在数据库和应用程序之间提供了一个持久层。

     

      第二幅图:轻量级体系,应用程序自己提供ADO.NET连接,并且自行管理事务。

      技术分享

 

       第三幅图:重量级体系:所有的底层ADO.NET API都被抽象了。

        技术分享

 

          技术分享

 

6、Nhibernate映射方法介绍(该点自己也存在一定的疑问,如果有知道的园友请指正)

     介绍:对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的(这个是一个基础)。那么我们基于这个基础来讲下如何更加便捷的进行映射。

     1、第一阶段:通过自己编写xml文档进行映射 (这种方法适合新入门的联系)

     2、第二阶段:通过代码生成工具进行映射(请园友知道的列下工具,因为之前公司用的是定制化开发出来的生成工具的)

     3、第三阶段:通过FluentNHibernate进行再代码中进行关系映射

     4、第四阶段:通过ConfORM工具进行   该介绍在李永京的文章中可以找到  (我也不太了解)

 

    暂时只有这四部分,如果有其他的方法,请园友提供指正,现阶段Nhibernate的文章基本都是2013年之前的,参考的价值只能适用入门。网上的实例文章跨度介绍,实在让人有些迷糊。所以想写一篇最近的文章出来,让大家一起讨论,一起进步。

毕竟流水线一样工作了5年,最后发现自己什么都没学到。

         

第二部分nhibernate中的类型

NHibernate类型、.net类型、数据库字段类型映射关系  因为NHibernate类型和c#数据类型是对应的,所以也分为值类型和引用类型,另外还有几个特殊的类,我们分别介绍:  --值类型|你应该知道的是值类型都继承自System.ValueTypeNHi... 查看详情

nhibernate教程--条件查询(criteriaquery)

NHibernate之旅(4):探索查询之条件查询(CriteriaQuery)2008-10-1618:20by李永京,44341阅读,43评论,收藏, 编辑本节内容NHibernate中的查询方法条件查询(CriteriaQuery)1.创建ICriteria实例2.结果集限制3.结果集排序4.一些说明根据示例查询(QueryByExamp... 查看详情

使用mygeneration生成nhibernate映射文件

这篇文章是介绍,NHibernate的好文,适合正在研究该框架的朋友,本帖只做转载处理,而且根据作者的要求在文章中贴出相关链接,仅为学习之用如果觉得侵犯了您的权益,请来信告知,我们会尽快删除... 查看详情

NHibernate 还是流畅的 NHibernate? [关闭]

】NHibernate还是流畅的NHibernate?[关闭]【英文标题】:NHibernateorFluentNHibernate?[closed]【发布时间】:2010-11-2323:13:54【问题描述】:我很想听听其他人关于他们是否会选择哪一个(请不要“两者都选”;)以及为什么选择的意见。使... 查看详情

用 Fluent Nhibernate 定义 NHibernate 过滤器的语法?

】用FluentNhibernate定义NHibernate过滤器的语法?【英文标题】:SyntaxtodefineaNHibernateFilterwithFluentNhibernate?【发布时间】:2010-10-3122:19:55【问题描述】:我似乎找不到正确的语法来使用流利的Nhibernate定义一个nhibernate过滤器。我正在尝... 查看详情

NHibernate - 获取引用的列值

】NHibernate-获取引用的列值【英文标题】:NHibernate-Fetchreferencedcolumnvalue【发布时间】:2012-09-1010:19:03【问题描述】:我有这个NHibernate模型:publicclassRootTablepublicvirtualstringNameget;set;publicvirtualstringDescriptionget;set;publicvirtualDateTi 查看详情

NHibernate 中的自动更新包

】NHibernate中的自动更新包【英文标题】:Auto-updatingBagsinNHibernate【发布时间】:2010-09-1208:17:27【问题描述】:我使用ASP.Net和NHibernate访问Pgsql数据库。对于我们的一些对象,我们使用NHibernate包,它映射到我们应用程序中的列表对... 查看详情

NHibernate 的生产版本

】NHibernate的生产版本【英文标题】:ProductionreleaseofNHibernate【发布时间】:2009-09-0912:10:35【问题描述】:我正在尝试开始使用NHibernate。我去https://www.hibernate.org/6.html下载了最新的生产版本。NHibernate下载在其旁边显示开发,而其... 查看详情

NHibernate.Spatial 与 NHibernate 3.0 兼容吗?

】NHibernate.Spatial与NHibernate3.0兼容吗?【英文标题】:IsNHibernate.SpatialcompatiblewithNHibernate3.0?【发布时间】:2010-02-1005:02:50【问题描述】:我想使用NHibernate.Spatial。我还想使用新的NHibernate3.0功能,例如改进的LINQ提供程序和QueryOver功... 查看详情

查询与 NHibernate 关系的一些属性

】查询与NHibernate关系的一些属性【英文标题】:QuerysomepropertiesonrelationwithNHibernate【发布时间】:2012-07-2013:22:57【问题描述】:我有一个像这样的Nhibernate映射模型:publicclassApublicvirtuallongIdget;set;publicvirtuallongNumberget;set;/*andother20pr... 查看详情

nhibernate第三方二级缓存bug

在下第一次使用NHibernate,看中了它的二级缓存,不过发现不开启缓存的话,数据是正常的,一旦开启就发现获取了很多重复数据,我试了NHibernate.Caches.MemCache和NHibernate.Caches.EnyimMemcached这两个缓存实现,发现bug是一样的,而使用N... 查看详情

Nhibernate 的历史

】Nhibernate的历史【英文标题】:HistorywithNhibernate【发布时间】:2011-12-0117:34:33【问题描述】:我正在使用NHibernate在asp.netmvc中开发应用程序。我的模型中有一些实体继承自Entity抽象类,如下所示:publicabstractclassEntityprivateIList<H... 查看详情

NHibernate - 是不是有生成 POCO 的工具?

】NHibernate-是不是有生成POCO的工具?【英文标题】:NHibernate-isthereatooltogeneratePOCOs?NHibernate-是否有生成POCO的工具?【发布时间】:2013-08-0110:37:06【问题描述】:我正在研究使用NHibernate,一切看起来都不错。有没有可以用来从当... 查看详情

基于 NHibernate 的全文搜索

】基于NHibernate的全文搜索【英文标题】:NHibernate-basedFull-TextSearch【发布时间】:2011-08-2711:57:33【问题描述】:我想将全文搜索集成到具有[Fluent]基于NHibernate的数据访问的.NET应用程序中。到目前为止,Lucene.NET和NHibernateSearch组合... 查看详情

Fluent NHibernate - NHibernate.QueryException:无法解析属性

】FluentNHibernate-NHibernate.QueryException:无法解析属性【英文标题】:FluentNHibernate-NHibernate.QueryException:couldnotresolveproperty【发布时间】:2014-12-1315:00:21【问题描述】:首先,是的,StackOverflow上有很多类似的问题,但我已经浏览了所... 查看详情

NHibernate:映射具有属性的复杂值类型?

】NHibernate:映射具有属性的复杂值类型?【英文标题】:NHibernate:mappingacomplexvaluetypewithattributes?【发布时间】:2011-03-2508:04:32【问题描述】:我一直在尝试使用NHibernate(2.1.2.4000)和NHibernate.Mapping.Attributes(1.2.1.4000)将IDictionary映射到... 查看详情

NHibernate 和 INotifyPropertyChanged

】NHibernate和INotifyPropertyChanged【英文标题】:NHibernateandINotifyPropertyChanged【发布时间】:2010-09-1401:51:19【问题描述】:我在绑定到使用延迟加载从NHibernate检索到的对象时遇到了一些问题。我已经阅读了一些关于这个问题的内容,... 查看详情

NHIbernate 的替代品?

】NHIbernate的替代品?【英文标题】:AlternativesforNHIbernate?【发布时间】:2011-01-1502:51:03【问题描述】:大家好,除了NHIbernate,我们还可以使用哪些其他库或框架?linq可以像NHIbernate那样与实体一起工作吗?linq可以自动为我们生... 查看详情