NHibernate 基本配置 (第一篇)

摘要: 使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习。今天就来详解一下NHibernate的配置。一、NHibernate基本配置 NHibernate配置要注意的有: 1、NHibernate需要一个自定义的配置节点,一般放在Web.confi...阅读全文
NHibernate 之持久化类、拦截器 (第二篇)

摘要: 一、持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1、声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHibernate支持public、internal、protected三种访问修饰符。 2、提供标识属性 持久化类必须提供一个标识属性,标识属性对应数据库的主键。 当然这个是可选的,并非强制性,但是强烈建议这么做。这个标识属性可以叫任何名字,任何类型。 3、属性必须是非密封的和虚的 持久化类中所有的属性,必须声明为非密封的,也就是不能带有sealed。而且必须带有virtual...阅读全文
NHibernate 映射基础(第三篇) 简单映射、联合主键

摘要: NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源。一、简单映射 下面先来一个简单的例子,然后随着不断地对这个例子修修改改,从而真正了解映射文件。具体的资料可以查看http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 先来看一张表: 映射文件Product.hbm.xml: PersonModel.cs:namespace Model{ public class...阅读全文
NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例

摘要: 映射文件,用于告诉NHibernate数据库里的表、列于.Net程序中的类的关系。因此映射文件的配置非常重要。 一、一对一 NHibernate一对一关系的配置方式使用<one-to-one>配置节点。 当我们两个表拥有相同的主键字段,主键值相同的需要关联在一起。比较典型的一个例子是,一个对象的属性阅读全文
NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>

摘要: 一、集合外键 在NHibernate中,典型的用于映射集合类的元素有,,,,,。 我们回到上一篇,集合映射基础当中的一对多查询。对于集合类型: public virtual ISet ListPerson { get; set; } NHibernate的配置文件与之对应的是: 那么、、、、、这些东西的用法以及它们之间的区别是什么呢? 1. ISet集合中的对象是唯一的,无序的,不能通过索引、key值访问。 在.Net中并没有与对应的类。因此当我们的配置文件是配置集合关系的时候,Model持久化类中ISet必须使用NHibernate的...阅读全文
NHibernate 组件基础 (第六篇)

摘要: 一、组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体。简单说来,假如数据库有FirstName,LastName这两个字段,我们在C#中可以将这两个字段提取出来作为一个Name对象使用。 示例,首先建一张表,并添加数据如下: Person.hbm.xml Model:namespace Model{ public class PersonModel { public virtual int Id { get; set;...阅读全文
NHibernate 延迟加载与立即加载 (第七篇)

摘要: 一、延迟加载 延迟加载可以理解为:当需要用的时候才加载。 假设我们数据库有一个Person对象,一个Country对象,其中Person属于Country,一对多关系。当我们Get()一个Person对象的时候。并不立即把Country对象也加入来,而是当我们的代码执行到要通过Person调用Country对象的时候,NHibernate才到数据库去查询对应的Country对象,这就叫延迟加载。相反,如果我们Get()一个Person对象,并且连与此Person对象相关联的Country对象也一起加载到程序中,这就叫立即加载。 延迟加载必须在Session的周期内,如果查询了数据,但是程...阅读全文
NHibernate 数据查询之Linto to NHibernate (第八篇)

摘要: 刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to NHibernate,那代码是相当的清晰明了,其实什么条件查询,HQL什么的感觉只是一个NHibe阅读全文
NHibernate Linq查询 扩展增强 (第九篇)

摘要: 在上一篇的Linq to NHibernate的介绍当中,全部是namespace NHibernate命名空间中的IQueryOver<TRoot, TSubType>接口提供的。IQueryOver<TRoot, TSubType>这个借口实际上会被翻译成条件查询(Criteria Querie阅读全文
NHibernate之一级缓存(第十篇)

摘要: NHibernate的一级缓存,名词好像很牛B,很难。实际上就是ISession缓存。存储在ISession的运行周期内。而二级缓存则存储在ISessionFactory内。一、ISession一级缓存测试 ISession默认开启一级缓存,不需要任何配置。ISession缓存在ISession创建后就可以使用,以后每次通过此ISession操作数据时,ISession会检测自身是否缓存有相应的数据,如果有则直接返回。如果没有,这时才查询数据库返回,同时缓存到ISession。当释放ISession实例的时候,缓存自动销毁。 示例: 首先我们先开启配置文件中的show_sql节点: ...阅读全文

NHibernate二级缓存(第十一篇)

摘要: 一、NHibernate二级缓存简介 NHibernate由ISessionFactory创建,可以被所有的ISession共享。 注意NHibernate查找缓存的顺序,在使用ISession操作数据时,NHibernate会先从一级缓存中查找需要的数据,如果一级缓存不存在需要的数据,则查找二级缓存,如果二级缓存存在所需数据,则直接使用缓存中的数据。如果二级缓存都没有,那么才执行SQL语句,从数据库中查找缓存。 NHibernate本身提供了一个基于Hashtable的HashtableCache缓存,不过功能有限且性能不高。不适合用于大型应用程序,不过我们可以使用第三方缓存提供程...阅读全文
NHibernate使用MemCache二级缓存

摘要: 首先,当然是安装MemCache服务器端了。 然后配置过程,仅仅两个问题。 1、NHibernate要与NHibernate.Cache的版本要一致。否则,NHibernate.Caches.MemCache.MemCacheProvider无法实例化。 2、要引用log4net,否则Memcached.ClientLibrary.SockIOPool无法实例化。 App.config: NHibernate.Dialect.MsSql2008Dialect NHibernate.Connection....阅读全文
NHibernate 操作视图 第十三篇

摘要: 在NHibernate中,可以把视图当表一样操作,只需要记住一点就是,视图是只读的,因此映射实体的setter应该改为protected。 新建一个视图如下: 持久化类: public class CountryPersonModel { public virtual int PersonId { get; protected set; } public virtual string PersonName { get; protected set; } public virtual string CountryName { ge...阅读全文
NHibernate 存储过程 第十四篇

摘要: NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误。一、删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DELETE FROM Person WHERE PersonId = @Id; 修改映射文件,添加删除对象的存储过程: DeletePerson ? 执行存代码: using (ISession session = sessionFactory.Op...阅读全文
NHibernate 过滤器(第十五篇)

摘要: NHibernate过滤器相当于定义一个非常类似于类和集合上使用的where子句。ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用。 该方法返回被启用的IFilter的实例。这也支持链式操作。 过滤器主要的配置都在映射文件内完成。来看示例: 操作: static void Main(string[] args) { ISessionFactory _sessionFactory =...阅读全文
NHibernate 继承映射(第十六篇)

摘要: 在NHibernate的映射中,关于继承的映射策略有3种方式单表继承类表继承具体表继承 另外还有一种比较特别的多态映射隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点。一、单表继承 单表继承的方式是,所有的字段都放在一个表中,用一个字段来区分子类。使用配置节点配置子类。 看DEMO,首先新建一张Animal表如下: 映射文件:Animal.hbm.xml: //discriminator-value用来标记表中哪些行是青蛙 映射文件:Fish.hbm.xml ...阅读全文
NHibernate之配置文件属性说明

摘要: 一、NHibernate配置所支持的属性属性名用途dialect设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL可用值:full.classname.of.Dialect, assemblydefault_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.可用值:SCHEMA_NAMEuse_outer_join允许外连接抓取,已弃用,请使用max_fetch_depth。可用值:true|falsemax_fetch_depth为单向关联(一对一, 多对一)的外连接抓取(outer阅读全文
NHibernate之映射文件配置说明

摘要: 1.hibernate-mapping 这个元素包括以下可选的属性。schema属性,指明了这个映射所引用的表所在的schema名称。假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格。 auto-import属性默认让我们在查询语言中可以使用非全限定名的类名。assembly和 namespace指定了持久化类的应用程序集名称和其所在的名称空间名。 各选项说明:(1)schema (...阅读全文
NHibernate 帮助类(单例实际运用)

摘要: 在NHibernate中,ISessionFactory是线程安全的,对应一个数据库。它是生成ISession的工厂。而ISession是线程不安全的。 创建一个ISessionFactory需要消耗比较多的资源。因此,我们只在程序初始化的时候创建一次,以后就一直使用这个ISessionFactory。 而ISession的创建只消耗很少的资源。因此我们可以随意创建。一、原始单例模式封装的ISessionFactory 因此,对于ISessionFactory,我们使用饿汉单例模式实现它。 原始饿汉单例模式封装ISessionFactory实例: //密封类 ...阅读全文

转载于:https://www.cnblogs.com/Hackson/p/7054664.html

框架:NHibernate学习目录相关推荐

  1. Bootstrap 框架学习目录

    Bootstrap 框架学习目录 转载于:https://www.cnblogs.com/ydchw/p/3708259.html

  2. 适合初学者对Yaf框架的学习(一)

    前言 最近接触到Yaf框架,从最初按照鸟哥惠新宸的写的关于Yaf手册,到自己写一个hello world 程序,对于我这个新手来说还是蛮曲折的,大家都知道yaf框架是用C写的,所以自身的效率和性能,还 ...

  3. 目录:SpringBoot学习目录

    SpringBoot配套源码地址:gitee.com/hengboy/spr- SpringCloud配套源码地址:gitee.com/hengboy/spr- SpringBoot相关系列文章请访问 ...

  4. Django学习目录

    Django学习目录 Django框架简介 Django基础 >>点我 ORM介绍 Django中ORM介绍 >>点我 ORM表操作 Django中ORM表相关操作 >& ...

  5. Python Web框架Django学习(二)

    python web框架Django学习(二) 目录:  三.Django创建APP  四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...

  6. (转)MyBatis框架的学习(三)——Dao层开发方法

    http://blog.csdn.net/yerenyuan_pku/article/details/71700957 使用MyBatis开发Dao层,通常有两个方法,即原始Dao开发方法和Mappe ...

  7. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  8. SCPPO(四):框架的学习

    [前言] 上篇博文为大家分享了自己新进入公司进行了禅道的搭建和使用:我们这个项目是维护和部分新功能的开发,做为一个新加入的成员,前一周组长安排是熟悉框架,给安排一个小任务.自己也马不停蹄的,首先对整个 ...

  9. 淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务

    2019独角兽企业重金招聘Python工程师标准>>> 继上一篇博文, 淘宝SOA框架dubbo学习(1) http://my.oschina.net/hanshubo/blog/3 ...

最新文章

  1. 软件从业人员如何激发敏捷团队?
  2. java多线程阻塞队列_阻塞队列和多线程消费者,如何知道何时停止
  3. 配置Tomcat连接池
  4. linux 提交git,linux下git使用记录1 git 提交
  5. 粗心能学计算机吗贴吧,考试丢分 , 真的是粗心那么简单吗?
  6. Target-Action回调模式
  7. [USACO 07DEC]Best Cow Line, Gold
  8. PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码
  9. hdu4292 Food 最大流
  10. 【故障诊断分析】基于matlab GUI小波包能量可视化设计【含Matlab源码 1788期】
  11. 教你怎么短期内备考并通过PMP考试!
  12. 《潜伏在办公室》 作者:陆琪
  13. 忘记Apple ID密码,如何移除iCloud激活锁
  14. win8 性能测试软件,PassMark PerformanceTest(电脑性能测
  15. 新手gxf学python---文件操作之登录、注册功能
  16. 4.1关系运算符和逻辑运算符
  17. 晨光科力普基于GitLab CI/CD持续集成服务的应用
  18. win10右键卡顿问题 简单实用
  19. 一小时搭建实时数据分析平台
  20. Java小白入门200例81之Java接口

热门文章

  1. python _winreg 操作注册表
  2. vector中针对自定义类型的排序
  3. jmeter安装 java,Windows下安装jmeter图文教程
  4. js访问对方手机文件夹_前端开发——解决vue首次访问太慢的问题
  5. SeleniumCSS选择器
  6. django模板_Django模板
  7. Android通知频道,通知点
  8. Python Parse JSON –转储,加载
  9. 学习PriorityQueue源码
  10. Python入门必备,Python零基础入门