An Introduce to NHibernate

Slides:



Advertisements
Similar presentations
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
Advertisements

An Introduction to Database System
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
数据库系统概论 An Introduction to Database Systems
第3章 数据库建模实践指南 北师大珠海分校软件工程系 赵池龙.
Visual Studio .NET企业设计师版中的基于Visio的数据库建模
对于湛江师范学院学生 学习目标与职业规划 调查总结
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
回顾与展望:高州经验与广东医改 省卫生计生委、省医改办 黄 飞 2015年7月3日.
第八章 了解法律制度 自觉遵守法律.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
J2EE Struts 和Spring 的区别.
第7章 行政监督.
数据库系统概论 第 三 版 主 讲: 李明东. 数据库系统概论 第 三 版 主 讲: 李明东.
香港明愛 綜合家居照顧服務 PWD個案分享.
世界各国的经济支柱产业 09工商一班 收集资料:盛秀秀 09B 李艳君 09B
转正述职报告 乐恩公司 史航
数据库技术及应用 华中科技大学管理学院 课程网址:
Google App Engine Google 應用服務引擎.
班级小插曲.
3.实行基层民主自治的意义   ①实行基层民主自治,以保证人民群众 依法直接行使民主权利,管理基层公共事务 和公益事业,是人民当家作主最有效的途径。   ②是社会主义民主最为广泛而深刻的实践,也是发展社会主义民主的基础性工作。
92-90數學課程綱要比較 -- 不含數與計算 台北市立師範學院 數學資訊教育系副教授 李源順.
第八章 分析與設計階段 – 物件導向設計(OOD)
外观模式.
Introduction to database
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第六章 學習SQL語言.
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
LINQ 建國科技大學 資管系 饒瑞佶.
課程名稱:資料庫系統 授課老師:李春雄 博士
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
Microsoft SQL Server 2000 李金双.
第9讲 Hibernate查询语言HQL.
彰化縣政府補助辦理網頁設計資料庫應用班 資料庫簡介 建國技術學院資管系 饒瑞佶.
第20章 LINQ 資料查詢技術 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或拷貝.
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第1章 SQL Server 2005 关系数据库简介.
AnQing Teachers College Department of Computer & Information
Spring & mongodb java实战mongodb 曹巍 2013年9月22日.
作者:梁桐铭 博客: 微信公众号:角落的白板报
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
資料庫系統導論.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
作者:汤雪华 博客: DDD & ENODE 作者:汤雪华 博客:
Introduction to Database Management
CH03 行銷資訊系統資料庫模組--資料庫概論
第14章 外观模式 Deng Song
江西财经大学《数据库应用》精品课程组 2011年 Comments are welcome!
資料庫管理系統 緒 論.
課程報告 使用開放原始碼工具實作軟體產品線方法
蘇文峰牧師 第一届“小组长研习会” Session 2
模式与实践:Windows Mobile 5.0应用程序架构
1 打开 SQL Server 2005 安装盘,单击 SPLASH.HTA 文件进行安装,安装界面如图所示。
從一本被卅三家出版社拒絕的書稿    變成有幾十部續集、行銷千萬冊的搶手叢書 《心靈雞湯》的出版就是活脫脫的勵志傳奇.
104年度 藝術與人文教學深耕計畫簡報 南投縣立集集國民中學 健康和諧 充滿活力 樂觀精進 追求卓越 溫馨成長 創作潛能
2.1 高職與私立學校註冊操作說明 (2015/9/15上線)
——向刑事案件被告人家属调查取证的伦理性讨论
LINQ 語法簡介 設計人:顏嘉君.
架构师成长感悟 吴隆烽
~建構有創意的教學策略~ 培養學生創意思考與創造力
案例分析: THE NEXTGEN POS SYSTEM
2014Fall 資訊模式 資料庫和資料模型 國立中央大學 資訊管理系 范錚強 updated 中央大學。范錚強.
本文档介绍 1. 如何使用同一台电脑录课; 2. 如何在其他电脑录课;
資料庫應用與實作 一到六章重點、習題.
第 1 章 認識資料庫系統.
Web安全基础教程
高擴充高穩定高安全 企業級資料管理平台 Report Builder概論 錢曉明 資策會 資深講師 台灣微軟 資深講師.
Presentation transcript:

An Introduce to NHibernate PART 1 J九日

内容 SQL Helper vs. NHibernate Object-Relational Mapping 关系模型 为什么使用 ORM? Hibernate 含义 NHibernate Mapping 核心类型 Exercise: ExBlogger

SQL Helper vs. NHibernate Working with SQL Helper 上层应用/Business Logic 太暧昧 创建数据对象 编写SQL 设计数据模型 以数据表为核心 模型仅为装载数据 底层可能包含业务逻辑 底层与上层关系紧密 受PetShop4的影响 设计数据表 前期的设计很 可能面目全非 “Data-Driven Design”

SQL Helper vs. NHibernate Working with NHibernate 各种应用程序 解决O-R不对称,转移主要关注点! 设计应用服务契约 Cache 设计业务领域对象 Search 设计资源库契约 NoSQL 以业务对象为核心 资源库不关心业务逻辑 应用层不关心契约实现 促进面向契约编程 NHibernate 资源库实现 设计数据表 Domain-Driven Design

Object-Relational Mapping Relational Model Relation Relation Relation

Object-Relational Mapping Relational Model Concepts 关系数据库(Relational Database)是建立在关系模型上的数据库; 一个数据表“就是”一个关系(Relation); 表(关系)之间通过“键”连接;

Object-Relational Mapping Why ORM ? Modeling mismatch Productivity and maintainability Performance Database independency ORM

Hibernate Hibernate: 休眠、冬眠 活动的熊 冬眠的熊 Hibernate

对象 关系 活动的熊 冬眠的熊 让开发者更关注对象的设计! Hibernate 关注点 Hibernate: Java Hibernate: a Java ORM Framework 对象 关系 Hibernate 活动的熊 冬眠的熊 Hibernate 关注点 Hibernate: Java 让开发者更关注对象的设计! NHibernate: .NET

NHibernate Mapping Mapping 嵌入的资源

…… Core NHibernate Types Build (Once) ISessionFactory Configuration Open Session ISession ISession …… Create IQuery ISQLQuery ICriteria IQueryOver IQueryable HQL SQL Dynamically LINQ

配置文件 Core NHibernate Types NHibernate.Cfg.Configuration Configuration Configure() Configuration Configure(string fileName) Configuration Configure(Assembly assembly, string resourceName) Configuration Configure(XmlReader textReader) // 构建 ISessionFactory 的实例 ISessionFactory BuildSessionFactory() 配置文件

Core NHibernate Types NHibernate.ISessionFactory //Create a database connection and open a <c>ISession</c> on it ISession OpenSession() ISession OpenSession(IDbConnection conn) ISession OpenSession(IInterceptor sessionLocalInterceptor) NHibernate.ISession object Save(object obj) void Delete(object obj) void Update(object obj) ICriteria CreateCriteria<T>() IQueryOver<T,T> QueryOver<T>() IQuery CreateQuery(string queryString) ISQLQuery CreateSQLQuery(string queryString) IQueryable<T> Query<T>(this ISession session)

Core NHibernate Types ISession查询示例:查询所有用户 Criteria Query Session.CreateCriteria<User>().List<User>(); Strong-typed Criteria Query Session.QueryOver<User>().List<User>(); NHibernate Linq Query Session.Query<User>().ToList<User>(); Query with Hibernate Query Language Session.CreateQuery("from User").List<User>(); Native SQL Query Session.CreateSQLQuery("select * from Users") .SetResultTransformer(Transformers.AliasToBean<User>()) .List<User>();

访客可以注册成用户 用户可以创建自己的博客 用户可以在自己的博客里写帖子 用户可以评论帖子 使用NHibernate框架持久化对象 Exercise:ExBlogger 目标:多用户博客程序 访客可以注册成用户 用户可以创建自己的博客 用户可以在自己的博客里写帖子 用户可以评论帖子 使用NHibernate框架持久化对象

Exercise:ExBlogger 访客 博客 注册 创建 博客用户 帖子 写 发表 评论

Exercise:ExBlogger Visitor Blog User Post Comment Register Create Ubiquitous Language 领域通用语言 Comment

Exercise:ExBlogger 应用服务契约的制定与测试(略) 已确定对象的创建工厂 已确定对象的职责 下一步:制定/实现资源库契约(Repository Contracts/Interfaces)

Exercise:ExBlogger IRepository<T> int Save(T entity); void Update(T entity); T Get(int id); IList<T> GetAll(); void Delete(int id); 通用持久化方法 IUsersRepository:IRepository<User> IBlogsRepository:IRepository<Blog> 自定义持久化方法 IPostsRepository:IRepository<Post> ICommentsRepository:IRepository<Comment>

Exercise:ExBlogger 创建并存储用户 var user = BlogRegistrar.GetInstance().CreateUser(“Mike", "pwd"); var id = _usersRepository.Save(user); 获取所有用户 var users = _usersRepository.GetAll();

Exercise:ExBlogger 创建并存储博客 var blog = user.CreateBlog("foo", "bar"); _blogsRepository.Save(blog); 创建并存储帖子 var post = user.CreatePost("Hello World", "This my first post!") .On(blog); _postsRepository.Save(post);

Exercise:ExBlogger 创建并存储评论 var comment = user.CreateComment("沙发").On(post); _commentsRepository.Save(comment); 获取评论列表:组装自定义的DTO

Thanks ! 示例代码SVN地址: http://ex-blogger.googlecode.com/svn/trunk/ 推荐资料: 李永京博客 http://www.cnblogs.com/lyj/ 领域驱动设计精简版 http://www.infoq.com/cn/minibooks/domain-driven-design-quickly