Submit Search
Upload
NHibernate分享(1) share
•
4 likes
•
1,088 views
Xu Huang
Follow
最近在部门内做的nhibernate分享
Read less
Read more
Technology
Report
Share
Report
Share
1 of 22
Recommended
Training ii:linq2sql
Training ii:linq2sql
powerzhuye
Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法
yiditushe
中软
中软
yiditushe
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构
Zelin Wang
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
2 hibernate核心api
2 hibernate核心api
Zelin Wang
zookeeper-internals
zookeeper-internals
Liu Shaohui
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudy
JialinQiao
性能优化(Performance Optimize) 建模(Moduling) 写入(Insertion optimize) 查询(Query Optimize) 案例分享(Case study) 地铁 电厂 车辆 气象
Recommended
Training ii:linq2sql
Training ii:linq2sql
powerzhuye
Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法
yiditushe
中软
中软
yiditushe
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构
Zelin Wang
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
2 hibernate核心api
2 hibernate核心api
Zelin Wang
zookeeper-internals
zookeeper-internals
Liu Shaohui
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudy
JialinQiao
性能优化(Performance Optimize) 建模(Moduling) 写入(Insertion optimize) 查询(Query Optimize) 案例分享(Case study) 地铁 电厂 车辆 气象
IoTDB Ops
IoTDB Ops
JialinQiao
启动方式(How to start) 目录结构 (Data folder) 配置文件 v0.10.0 (Configurations) 错误码 (Error code) JMX监控(JMX monitor) 常见问题(FAQ)
组合、备忘录、建造者模式、原型
组合、备忘录、建造者模式、原型
诸葛修车网-诸葛商城
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 本文档主要讲解其中的组合、备忘录、建造者模式、原型模式
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
Wade Huang
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
4, OCP - oracle networking
4, OCP - oracle networking
ted-xu
Oracle Networking
整合資料庫
整合資料庫
Justin Lin
了解JDBC架構 使用JDBC API 瞭解交易與隔離層級 認識RowSet
Enqueue Lock介绍.ppt
Enqueue Lock介绍.ppt
james tong
Java并发编程培训
Java并发编程培训
dcshi
JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章
Justin Lin
提供第五章試讀! 認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)
yiditushe
第06章 树和二叉树(java版)
第06章 树和二叉树(java版)
Yan Li
JAVA内存泄漏及诊断
JAVA内存泄漏及诊断
ivannotes
有关Java内存泄漏的一个例子
Javascript 闭包
Javascript 闭包
jason hu 金良胡
安卓中的设计模式举例 by hjm1fb
安卓中的设计模式举例 by hjm1fb
Albert Hong
安卓中的设计模式举例 MVP, MVC, 单例等
Hibernate的高级操作
Hibernate的高级操作
yiditushe
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
yiditushe
Struts学习笔记
Struts学习笔记
yiditushe
MySQL和IO(上)
MySQL和IO(上)
Feng Yu
Comsense Company Profile
Comsense Company Profile
Sagar Babar
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
TNR Global
More Related Content
What's hot
IoTDB Ops
IoTDB Ops
JialinQiao
启动方式(How to start) 目录结构 (Data folder) 配置文件 v0.10.0 (Configurations) 错误码 (Error code) JMX监控(JMX monitor) 常见问题(FAQ)
组合、备忘录、建造者模式、原型
组合、备忘录、建造者模式、原型
诸葛修车网-诸葛商城
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 本文档主要讲解其中的组合、备忘录、建造者模式、原型模式
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
Wade Huang
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
4, OCP - oracle networking
4, OCP - oracle networking
ted-xu
Oracle Networking
整合資料庫
整合資料庫
Justin Lin
了解JDBC架構 使用JDBC API 瞭解交易與隔離層級 認識RowSet
Enqueue Lock介绍.ppt
Enqueue Lock介绍.ppt
james tong
Java并发编程培训
Java并发编程培训
dcshi
JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章
Justin Lin
提供第五章試讀! 認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)
yiditushe
第06章 树和二叉树(java版)
第06章 树和二叉树(java版)
Yan Li
JAVA内存泄漏及诊断
JAVA内存泄漏及诊断
ivannotes
有关Java内存泄漏的一个例子
Javascript 闭包
Javascript 闭包
jason hu 金良胡
安卓中的设计模式举例 by hjm1fb
安卓中的设计模式举例 by hjm1fb
Albert Hong
安卓中的设计模式举例 MVP, MVC, 单例等
Hibernate的高级操作
Hibernate的高级操作
yiditushe
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
yiditushe
Struts学习笔记
Struts学习笔记
yiditushe
MySQL和IO(上)
MySQL和IO(上)
Feng Yu
What's hot
(20)
IoTDB Ops
IoTDB Ops
组合、备忘录、建造者模式、原型
组合、备忘录、建造者模式、原型
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
CH04:認識物件
CH04:認識物件
4, OCP - oracle networking
4, OCP - oracle networking
整合資料庫
整合資料庫
Enqueue Lock介绍.ppt
Enqueue Lock介绍.ppt
Java并发编程培训
Java并发编程培训
JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章
CH09:Collection與Map
CH09:Collection與Map
由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)
第06章 树和二叉树(java版)
第06章 树和二叉树(java版)
JAVA内存泄漏及诊断
JAVA内存泄漏及诊断
Javascript 闭包
Javascript 闭包
安卓中的设计模式举例 by hjm1fb
安卓中的设计模式举例 by hjm1fb
Hibernate的高级操作
Hibernate的高级操作
14. 進階主題
14. 進階主題
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
Struts学习笔记
Struts学习笔记
MySQL和IO(上)
MySQL和IO(上)
Viewers also liked
Comsense Company Profile
Comsense Company Profile
Sagar Babar
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
TNR Global
Powert pointbarcelona
Powert pointbarcelona
maherin
Power point sobre Barcelona
Virtual event trends i
Virtual event trends i
virtuence.com
Alzheimer
Alzheimer
maherin
Treball de Ciències per al món contemporani de 1bat sobre el Alzheimer
our virtual event process
our virtual event process
virtuence.com
our virtual event process
what is virtual event?
what is virtual event?
virtuence.com
what is virtual event?
understanding virtual event
understanding virtual event
virtuence.com
our virtual event advantage
our virtual event advantage
virtuence.com
Presentation on robotics
Presentation on robotics
Alakshendra Tyagi
Robots presentation
Robots presentation
aroobkazim
Viewers also liked
(11)
Comsense Company Profile
Comsense Company Profile
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
Esp2solr eurocon-2011-presentation-111021215049-phpapp02
Powert pointbarcelona
Powert pointbarcelona
Virtual event trends i
Virtual event trends i
Alzheimer
Alzheimer
our virtual event process
our virtual event process
what is virtual event?
what is virtual event?
understanding virtual event
understanding virtual event
our virtual event advantage
our virtual event advantage
Presentation on robotics
Presentation on robotics
Robots presentation
Robots presentation
Similar to NHibernate分享(1) share
Hibernate教程
Hibernate教程
Shilong Sang
Hibernate教程
Exodus2 大局观
Exodus2 大局观
wang hongjiang
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pub
jiangxu
中远公司 Java培训资料
中远公司 Java培训资料
yiditushe
Java面试笔试题大汇总
Java面试笔试题大汇总
yiditushe
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Frank S.C. Tseng
For database management course Instruction
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Sky Jian
My sql管理基础 李春_v2
My sql管理基础 李春_v2
Pickup Li
mysql overview mysql replication mysql HA
Altibase管理培训 管理篇
Altibase管理培训 管理篇
小新 制造
Aswan&hump
Aswan&hump
wang hongjiang
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
Mysql HandleSocket技术在SNS Feed存储中的应用
3 hibernate映射元素和类型
3 hibernate映射元素和类型
Zelin Wang
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
yiditushe
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
appollo0312
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
mysqlops
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
构建基于Lamp的网站架构
构建基于Lamp的网站架构
Cosey Lee
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
软件工程 第十一章
软件工程 第十一章
浒 刘
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
zhu02
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
fulin tang
beta 沙龙上 唐福林(tangfulin) 《基于Lucene的站内搜索实战》讲稿 http://blog.fulin.org
Similar to NHibernate分享(1) share
(20)
Hibernate教程
Hibernate教程
Exodus2 大局观
Exodus2 大局观
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pub
中远公司 Java培训资料
中远公司 Java培训资料
Java面试笔试题大汇总
Java面试笔试题大汇总
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
My sql管理基础 李春_v2
My sql管理基础 李春_v2
Altibase管理培训 管理篇
Altibase管理培训 管理篇
Aswan&hump
Aswan&hump
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
3 hibernate映射元素和类型
3 hibernate映射元素和类型
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
构建基于Lamp的网站架构
构建基于Lamp的网站架构
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
软件工程 第十一章
软件工程 第十一章
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
NHibernate分享(1) share
1.
【.NET技术培训】 数据访问框架NHibernate(一)
2011-3 侯昆(@wskyhx)
2.
Nhibernate Architecture http://nhforge.org/wikis/reference2-0en/architecture.aspx
3.
从简单使用例子开始 http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx
1. 编写实体 2. 编写映射文件*.hbm.xml 3. 编写hibernate.cfg.xml 4. 初始化Nhibernate 5. 自动搜索cfg配置文件 6. 自动搜索映射文件 7. 生成数据库schema 8. 插入数据 9. 查询
4.
从简单使用例子开始
插入第一条记录 FirstEntity NHibernate.Criterion是Nhibernate提供的 面向实体的标准查询支持 NHibernate.Criterion.Expression下提供了 常用的查询条件表达式,可以支持各种复杂的条 件
5.
NHibernate.Criterion提供的丰富查询支持 NHibernate.Criterion.Expression下提供了常用的查询条件表达式,可以支持各 种复杂的条件,支持hql和sql NHibernate.Criterion.Order提供排序支持
6.
NHibernate.Criterion提供的丰富查询支持 NHibernate.Criterion.Subqueries提供子查询支持 NHibernate.Criterion.Projections提供投影(Projection)支持,并支持hql和sql 【注意】 使用SQL会绕过Nhibernate的Session管理,会造成潜在问题,如:二级缓存stale 在有性能问题的少量场景可以使用SQL进行select查询 丌使用SQL进行update delete
除非上下文没有其他逻辑 或没有二级缓存, 或你主动维护二级缓存 或二级缓存失效时间很短
7.
NHibernate.Criterion提供的丰富查询支持 NHibernate.Criterion.DetachedCriteria提供游离查询对象的支持 无需再构造各种各样的查询对象 直接在UI层构造DetachedCriteria,Service层用object传递
8.
关系映射 one-to-many many-to-one
9.
关系映射 one-to-one(不建议使用) many-to-many 需要中间表
10.
关系映射 component Component的属性也可以是其他Entity,如:FirstId映射为FirstEntity
11.
SessionFactory和Session SessionFactory 根据nhibernate配置构造并实例化,用于提供Session实例,以及二级缓存的 提供等。 Session 提供对数据库的访问, 实现了Unit of
Work(工作单元)模式,对与其关联 的所有对象进行管理,记录并向数据库提交变更,内置缓存(一级缓存) 一级缓存的隐患: 没有大小限制,批量操作会带来内存开销问题,可使用bathsize来避免
12.
Flush的问题 从我们的测试用例说起…… 何时需要flush? http://stackoverflow.com/questions/780755/nhibernate-flush-how-it-works http://stackoverflow.com/questions/43320/nhibernate-isession-flush-where-and- when-to-use-it-and-why 用事务则不用考虑,如果不,则在代码的最后flush 由此引出的问题: Identity主键类型对模式的破坏: http://nhforge.org/blogs/nhibernate/archive/2008/12/21/identity-the-never- ending-story.aspx Identity和guid之争?索引的生成问题?主键的大小?使用newsequentialid解决?
13.
Flush引出的问题 使用 newid 产生的新的值是丌固定的,所以新的值导致索引B+树的变化是随机的。 而
newsequentialid 产生的新的值是有规律的,则索引B+树的变化是有规律的。 有规律和无规律就会带来性能的改进。
14.
Flush引出的问题 using identity you
are “disabling” the ADO-batcher NH’s feature for inserts 在Nhibernate中使用guid.comb解决索引顺序问题:
15.
Lazyload和对象代理
16.
Lazyload和对象代理 Property非引用类型无法进行lazyload,以下声明无效: Lazyload的Null陷阱:动态代理对象 如何判断? 我们通过约定来避免该问题,数据库使用约定: 1. 数据(至少是业务数据)不做物理删除 2. 程序产生的delete代码将会被监控
17.
二级缓存 http://www.cnblogs.com/lyj/archive/2008/11/28/1343418.html
只能按主键缓存,条件查询可使用查询缓存 什么样的数据适合存放到第二级缓存中? 1. 很少被修改的数据 2. 丌会被并发访问的数据 3. 参考数据,指的是供应用参考的常量数据,它的实例 数目有限,它的实例会被许多其他类的实例引用, 实例极少或者从来丌会被修改。
18.
对象状态 http://www.cnblogs.com/RicCC/archive/2007/04/17/NHibernate-Entity-
LifeCycle-Secondary-Cache-Interceptor.html Seesion 关联(被管理,可以保存变更,可以lazyload) New() Session.save() 没有关联session session.Evict() Transient Persistent Detached 瞬态 持久态 游离态 不可以lazyload 存在数据库记录 DB
19.
我们对Nhibernate使用方式 使用castle的nhibernate facilities初始化nhibernate
使用castle的ISessionManager进行Isession自动管理,不需要session.close() 使用castle的ATM进行自动事务控制,不需要session.beginTransaction()/flush() 少量使用二级缓存,只对基本不变更但频繁访问的数据使用,如:User 数据库连接加密:encrypt=“true”
20.
其他 使用DetachedCriteria游离查询对象取代各种各样的Query对象 另外一种复用查询对象的方法:clone() Projections缺陷:不能生成Entity,可考虑自行实现投影获取Entity(Castle ActiveRecord中有实现) 使用FluentNHibernate进行Mapping具备很好的描述能力: http://wiki.fluentnhibernate.org/Fluent_mapping EntityName的使用 http://nhforge.org/wikis/howtonh/mapping-the-same-class-to-a-view-and-a-table-using-entity-name.aspx http://www.cnblogs.com/lyj/archive/2009/12/08/nhibernate-new-features-entity-name.html 理解Nhibernate类型系统:http://dotnet.dzone.com/articles/understanding-nhibernate-type Nhibernate调优:HQL和Criteria的调优要在理解mapping的基础上,在确实存在问题的地方直接使用SQL NHibernate3.0
新特性 参考资料: http://nhforge.org/Default.aspx http://www.cnblogs.com/lyj/archive/2008/10/30/1323099.html
21.
ORM技术选型
POCO支持 对象状态管理 关系映射 设计侵入性 自动事务控制,管理 SQL支持 文档,源码质量 数据库无关性支持 存储过程支持 SQL跟踪,调优 批处理 多级缓存 开源 contrib丰富 lazyload api粒度,设计优雅
22.
Nhibernate作为一个成熟的ORM框架,它的层次、扩展、开放性设计以及源码具 有很高的学习价值,可以看到众多经典的企业应用架构模式的身影
Tank You