随笔分类 -  框架学习----NHibernate

摘要:本节内容引入对象状态对象状态转换结语引入在程序运行过程中使用对象的方式对数据库进行操作,这必然会产生一系列的持久化类的实例对象。这些对象可能是刚刚创建并准备存储的,也可能是从数据库中查询的,为了区分这些对象,根据对象和当前会话的关联状态,我们可以把对象分为三种:瞬时对象:对象刚刚建立。该对象在数据库... 阅读全文
posted @ 2015-09-18 13:07 awp110 阅读(171) 评论(0) 推荐(0)
摘要:原文地址:Must Everything Be Virtual With NHibernate?老赵在博文中我对NHibernate的感受(2):何必到处都virtual 提到这篇文章,顺便翻译一下。如果你使用过 NHibernate 2.0 或者以后的版本,毫无疑问你将会遇到过几次下面的异常:NH... 阅读全文
posted @ 2015-07-25 09:23 awp110 阅读(394) 评论(0) 推荐(0)
摘要:换个角度说工作单元(Unit Of Work):创建、持有与API调用 http://www.cnblogs.com/ahl5esoft/p/4009348.html 总结: 1)减少与数据库通讯的次数 2)它记录对象的变化,然后在需要操作数据库的时候,才去 Commit 阅读全文
posted @ 2015-07-20 08:54 awp110 阅读(208) 评论(0) 推荐(0)
摘要:http://jahav.com/blog/automapper-queryable-extensions/How to generate a LINQ query for your DTOsAutoMapper is a really cool library that allows us to ... 阅读全文
posted @ 2015-07-19 09:34 awp110 阅读(560) 评论(0) 推荐(0)
摘要:.NET4.0已经实现了该功能http://jahav.com/blog/nhibernate-using-net-4-iset/NHibernate using .NET 4 ISet0 CommentsNHibernate 4.0 (released in 2014-08-17) has bro... 阅读全文
posted @ 2015-07-19 09:15 awp110 阅读(206) 评论(0) 推荐(0)
摘要:本篇文章介绍的是NHibernate的各种API及其作用。下图描述了NHibernate的API在分层架构中的作用,下面将进行详细说明。NHibernate的接口大致分为四类:1. 被应用程序调用进行基本数据操作(增、删、改、查)的接口。这些接口是应用程序的业务逻辑层和控制层与NHibernate的... 阅读全文
posted @ 2015-07-11 20:38 awp110 阅读(483) 评论(0) 推荐(0)
摘要:NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译第一章第二节Mapping a class with XML第一章第三节Creating class hierarchy mappings第一章第四节Mapping ... 阅读全文
posted @ 2015-07-08 22:05 awp110 阅读(163) 评论(0) 推荐(0)
摘要:Setting up a base entity class设置一个实体类的基类在这节中,我将给你展示怎么样去为我们的实体类设置一个通用的基类。准备工作完成前面三节的任务如何去做1.在Entity.cs中,为我们的Entity类输入如下代码:publicabstractclassEntity{pub... 阅读全文
posted @ 2015-07-08 21:51 awp110 阅读(189) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/educast/article/details/6602353最近遇到了一个让人抓狂的性能问题。生产环境里有一张表的数据量目前达到了 70 万条。结果发现无论是匹配主键的查询还是更新,执行一条语句居然需要 3.5 秒!如果把 NH Prof 中截获的 SQL... 阅读全文
posted @ 2015-07-08 21:50 awp110 阅读(330) 评论(0) 推荐(0)
摘要:NHibernate中Session是线程不安全的,而且每次数据库操作 请求创建Session时对性能有些影响。在Windows应用中可以通过 [ThreadStatic]特性很简单的就可以实现线程安全,而在Web中可以通过将Session与用于请求HttpContext绑定实现线程安全,并且用户当... 阅读全文
posted @ 2015-07-08 21:38 awp110 阅读(936) 评论(1) 推荐(0)
摘要:So here is my current UnitOfWork implementation. This one makes use of the somewhat new current_session_context_class feature. I think this is quite s... 阅读全文
posted @ 2015-07-08 13:28 awp110 阅读(180) 评论(0) 推荐(0)
摘要:Contains 缓存中是否存在SessionFactoryBizCom.GetInstance().GetCurrentSession().Contains(t1)Evict临时状态(Transient):当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果... 阅读全文
posted @ 2015-07-08 09:25 awp110 阅读(229) 评论(0) 推荐(0)
摘要:通过NHibernate我们多表查询是实现了 但由于查询出来的集合中的对象“不是平的”,如何在送到UI绑定成了问题。ExtJs UI组件的数据绑定支持多种格式,如简单数组,Json,Xml。在本项目中我们统一,服务器端通过Json把数据传输到Ext进行解析和绑定。那么我们现在只需要找个方便的办法把我... 阅读全文
posted @ 2015-06-29 08:47 awp110 阅读(364) 评论(0) 推荐(0)
摘要:Component(p => p.UserInfoOther, a => { a.Map(k => k.LoginName); });Fluent NHibernate – NHibernate without configuration filesNHibernate is great, (no doubt about it) but every time I was supposed to work with it, the fact that I had to manually type in all those xml configuration entries wa 阅读全文
posted @ 2013-05-09 15:38 awp110 阅读(501) 评论(0) 推荐(0)
摘要:get和load方式是根据id取得一个记录下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓存,如果有则直接返回 如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常 如果是lazy则需要建立代 阅读全文
posted @ 2013-04-26 14:52 awp110 阅读(152) 评论(1) 推荐(0)
摘要:Hibernate提供以下检索策略:==> 立即检索==> 延迟检索==> 迫切左外连接检索总结一下优缺点和优先考虑使用的场合1、立即检索:优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地从一个对象导航到与它关联的对象。缺点:[1]select语句数目多[2]可能会加载应用程序不需要访问的对象,浪费时间和内存空间优先考虑使用的场合:[1]类级别[2]应用程序需要立即访问的对象[3]使用了二级缓存2、延迟检索:优点:由应用程序决定需要加载哪些对象,可以避免执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并 阅读全文
posted @ 2013-04-26 14:20 awp110 阅读(157) 评论(2) 推荐(0)
摘要:这几天在做NHibernate连接Oracle的测试,配置文件是从NHibernate发行包里拷贝出来的,做了简单的连接字符的修改,配置文件如下:代码<?xml version="1.0" encoding="utf-8"?><!-- This template was written to work with NHibernate.Test.Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and ch 阅读全文
posted @ 2013-04-22 10:37 awp110 阅读(483) 评论(1) 推荐(0)
摘要:前言 Ioc(Inversion of Control)中文译名控制反转, 一个很流行的词汇, 虽然dotNet社群谈论的仍然比较少, 但随着dotNet平台下的一些Ioc组件的成熟, 这个概念也慢慢深入人心了, 本文并不抓住概念大谈特谈, 而是从一个简单的示例以平实的语言和大多开发者所遇到的问题来简单分析下Ioc容器能为我们带来什么及如何更好使用. Ioc(控制反转)是一个目标, 他要求我们设计好的类不由我们自己控制而由系统控制, 这样可以使系统变得更加独立, 从而强壮易于扩展维护, 实现这个目标有一些手段如DI(Dependency Injection), Service Locator等 阅读全文
posted @ 2012-08-09 11:11 awp110 阅读(150) 评论(0) 推荐(0)
摘要:综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/。 EmitMapper映射效率比较高,接近硬编码。EmitMapper采用emit方式在运行时动态生成IL,而其他映射框架多是采用反射机制。此外EmitMapper最大限度地减少了拆箱装箱操作和映射过程中的额外的调用。 EmitMapper支持.net的所有平台:Framework 3.5、Microsoft Silverlight 3、Mono。 EmitMapper的使用非常简单,不需要指定任何的映射策略。系统会采用默认的映射配置器DefaultMapConfig完成映射 阅读全文
posted @ 2012-06-21 15:57 awp110 阅读(3766) 评论(0) 推荐(0)
摘要:Id(p => p.Ticketcode).GeneratedBy.Assigned().UnsavedValue(null);//指定策略主键传进来为什么要取代XML文件呢?a.XML不是实时编译的。当你的XML配置文件有错误时,你只有在运行时才能看到哪里出错。b.XML是非常繁琐的。的确在NHibernate中的配置文件,xml节点非常简单,但是仍然掩盖不了XML文件本身的繁琐性。c.映射文件中重复的属性设置。比如在xml中我们需要设置每个string类型的字段都不允许为空,长度大于1000,int型都得有个默认值为-1,这样最终的xml配置文件你会发现有很多的重复工作。Fluent 阅读全文
posted @ 2012-06-13 19:12 awp110 阅读(1507) 评论(2) 推荐(0)