首页
学习
活动
专区
圈层
工具
发布

NHibernate 缓存

在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation...注意最后一句, 明确说明了一级缓存的用途: 在对象树种导航、浏览时, 使用一级缓存; 根据对象的 id 加载对象; 由此可以看出, 一级缓存的作用是比较有限的, 但是也有用得着的地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 在使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...也可以在实体类的 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐的做法。...以上是在项目中用到的二级缓存相关知识的整理, 肯定不完整, NHibernate 的缓存还有更多的地方需要挖掘。

1.1K11

NHibernate学习笔记之一,Hello world!

准备工作: 需要使用.NET Framework 2.0或上以版本的框架,准备NHibernate框架,本文使用3.3版,到目前NHibernate都还是基于.net framework 2.0,官方下载地址...:http://sourceforge.net/projects/nhibernate/files/,如果嫌麻烦,可以下载本文示例,中间包含了NHibernate。...开始做一个简单的增删改查示例,如图1示例:  图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...文件夹中的对应数据库配置文件,这里使用MSSQL,所以复制“MSSQL.cfg.xml”,并对NHibernate的配置信息适当修改 。...            finally             {                 session.Close();             }         }     } } 7、在表示层使用

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Fluent NHibernate之旅(四)-- 关系(上)

    经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习中,Fluent 也已经进入了RTM版本。...这次的版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量的功能,在每天更新中,也看到了大量的单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Mapping 今天我们将说一下ORM中的R映射,我们现在的数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计中也是非常重要的部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...够简单的吧,User和UserDetail是一对一关系,构建我们的实体类: public class User { public virtual int UserID { get; set; }...ID与User的ID是一致的,所以我们要使用Foregin来获取User的ID。

    1.7K60

    NHibernate 缓存

    在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation...注意最后一句, 明确说明了一级缓存的用途: 在对象树种导航、浏览时, 使用一级缓存; 根据对象的 id 加载对象; 由此可以看出, 一级缓存的作用是比较有限的, 但是也有用得着的地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 在使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...也可以在实体类的 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐的做法。...以上是在项目中用到的二级缓存相关知识的整理, 肯定不完整, NHibernate 的缓存还有更多的地方需要挖掘。

    79710

    Nhibernate入门与demo

    学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...其中:李永京的博客http://www.cnblogs.com/lyj/tag/NHibernate/  内容最为丰富。而且在李哥的博客里面学了很多东西,在此致谢!      ...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们的Nhibernate的旅程。    ...通俗讲,就是我们操作实体类,然后让ORM框架自动映射到数据库中。      而Nhibernate就是:.Net环境下实现ORM的技术的一个框架!     ...第四个问题:         使用和测试你的配置【可以爽一把了!】

    92030

    C#——Nhibernate探索

    这里有两个类库;可以分析得出,这两个类库是要被引用的。 类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。 NHibernate.pdb应该是没有用的。估计是作者忘记删除了。...上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。 看起来很复杂,文章有很多,写的又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用类库。...) { return Session.Get(Id); } } 再然后,我们新建一个控制台程序,用于测试我们编写的这个NHibernate...为什么说是探索之旅呢,因为,我也是首次配置Nhibernate,我平常更多的是使用Entity Framework。 文中使用了一些推断,猜测的词语。那是因为,真的是在推断的。...我并不清楚那几个点的原理和含义,因为我没看Nhibernate的原代码。 虽然本文是讲述,配置Nhibernate;但我更想讲述的是,面对未知的框架入手学习和使用的方法。

    95730

    NHibernate教程

    大家好,又见面了,我是你们的朋友全栈君。 一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。...由此可见,NHibernate不仅仅管理.Net类到数据库表的映射,还提供数据查询和获取数据的方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据的时间。...二、NHibernate使用步骤 1.为系统引入NHibernate的库,并且配置NHibernate; 2.新建一个将要持久化.Net对象的表; 3.构建一个需要被持久化的.Net类; 4.构建一个可以让...NHibernate知道如何完成ORM映射的XML文件; 5.使用NHibernate的API来编程 三、NHibernate的使用 1....(1) 在类中声明NHibernate的Factory private static Configuration mCfg=new Configuration(); private static

    87410

    NHibernate详解

    大家好,又见面了,我是你们的朋友全栈君。 什么是NHibernate: NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。...4.构建一个让NHibernate知道如何连接数据库的配置文件 5.使用NHibernate的API 第一步:写构建表的SQL 这里我们将使用的是一个非常简单的例子...假设你正在为你的网站开发一个基本的用户管理子系统。我们将使用如下的一张User表(假定你已经设置好一个数据库—在的例子里我称它为NHibernate)。...让我们先跳过id标签,来讨论property标签。简要看一下,你将发现NHibernate所要做的工作。name属性的值正是我们.Net 类的属性,column属性值将是我们数据库里的字段。...那里有一堆属性你需要调整来确定如何让NHibernate来访问数据库。再次说明,你可以在文档里获取更多信息。 NHibernate使用log4net来记录内部发生的一切。

    1.3K30

    ORM for Net主流框架汇总与效率测试

    为了测试的接近实际型,我执行的时候关掉了电脑上的所有程序,除测试程序,10次相同环境下重复测试10万条数据量的平均值。...Gentle.Net 优点:支持t-sql,语法简单方便,效率高。 缺点:依赖代码生成器生成每个实体类。 iBatis 优点: 效率比较高,尤其是非并发下效果很高,比较稳定。...缺点:配置文件比较多,t-sql在每个配置文件里面写,条件查询比较麻烦。 SubSonic 优点:删除和查询效果很好,添加比较慢。 缺点:语法比较接近Linq,语法自成一派比较不满意。...NHibernate 优点:覆盖功能比较全,稳定性好,集成性能好,使用比较广泛,支持t-sql和hql语法。 缺点:配置比较多,比较麻烦,效率比较慢。 NBear 优点:配置最简单。...缺点:操作语法不成熟,不支持t-sql,使用起来不方便,已经很久没有更新了。 ps:大家根据测试的结果自行选择合适的框架。

    1.2K70

    NHibernate介绍「建议收藏」

    C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate使用的核心组件。...相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定的基类中继承而来的。 在NHibernate中不用特殊的修饰就可以让对象和持久化层交互。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例中这可能是一对一关系,但这并不是必定的。...id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。在本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。

    1.3K20

    Fluent NHibernate之旅(三)-- 继承

    从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...NHibernate中,一定看到过了,其实就是把父类、子类的所有属性放到一个表中,这样做的好处就是我们不需要建立其他表,一张表格全搞定,但缺点也显而易见,在属性少的情况下或许没有什么,但是多了以后,我们的维护...在说一下DiscriminateSubClassesOnColumn,这就是标识符的一个映射方式,因为在RC版之前,我们可以使用SetAttribate的方法,设定我们的父类为"not-null" 但是在...,而且现在的更新也非常快,后面几张可能说下几种不常见的映射和会遇到的些麻烦,不过感觉园子里使用NHibernate的人不太多,关注度不多,不过不影响我继续写下去的决心,这次也很偶然接触了FNT,确实有好多好的地方可以借鉴一下...,而且在系列中,基本上每个范例都写了测试代码,虽然丑陋了点,但从小做起嘛,以后要养成这个习惯。

    1.1K80

    Fluent NHibernate之旅(四)-- 关系(中)

    映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们的映射一切都变得如此简单,先来看看Model吧,用户的订单列表,对于用户来说,暂时是不需要排序的,所以我们可以使用ISet作为Order...FluentSessionFactory.GetCurrentFactory(); using (var session = factory.OpenSession()) { User user = session.Get...一对多的映射,比起一对一来说还相对的简单点,默认是延迟加载,如果项目中,有些地方,需要立即加载,我们也可以使用 FetchMode.Eager 来加载。...我们在Output中,能看到NHibernate生成的Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。...如果您在使用Fluent Nhibernate的时候也遇到了问题,可以及时与我联系或求助于Fluent 的Google Groups。 应“亦续缘”的要求,我把代码整理了下,发上来,便于大家学习。

    1.1K100

    C# 数据操作系列 - 12 NHibernate的增删改查

    前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...:可选项,默认是none,一种默认的级联风格 auto-import:明确是否可以在查询中使用非限定类名。...接下来,让我们探索class如何映射成的。 1.2.1 id 任何一个映射都必须声明一个数据表的主键,大多数类也必须有一个唯一标示字段用来区分不同的实例。...增删改查 Nhibernate的每次操作都基于一个Session,所以我们在操作数据库的时候最好先持有一个可用的Session。接下来,我们就一个通用数据库操作类为基础,向大家分享一下我的想法。...首先,创建一个泛型模板类,并约束泛型为类: public class RepositoryT> where T: class { } 添加一个ISession属性,用来后续访问操作,并由构造方法赋值

    1.8K20
    领券