概要
第一章描述了一个场景,解释什么是持久层以及如何使它适用于商业应用。我们简单的介绍了一下NHibernate,同时与其它流行的框架如Linq to SQL和Datasets做比较。通过这一章你可以了解到ORM遇到的主要问题已经NHibernate如何去解决这些问题。
第二章给出了一些代码,简单的介绍如何安装NHibernate已经如何建立一个简单的应用。紧接着我们将开始探索NHibernate的主要功能,包括查询,事务处理,用户定制的接口。我们同时展示了基本设置和高级设置,让你可以通过日志更深入的了解NHibernate背后是如何工作的。
第三章以一定的速度告诉你NHibernate的大部分功能。我们提出了一个更复杂的问题--CavertEmptor应用程序--并引导你通过模型化你的业务模型,通过映射表示类型之前的关联关系。你将会了解NHibernate如何使用xml和.net属性来实现映射。我们同时也解释了一些灵活的功能,例如使用灵活的属性映射和自动内容约定。本章解释了ORM标识的重要性,通过解释映射的继承和关联关系来建立预备知识。
第四章深入的介绍一些重要的概念:实体的生命周期,持久化状态,等同性。让我们了解这些知识是如何通过NHibernate 的API进行权衡。了解一下整个对象图如何工作,讨论级联持久化,批量操作,懒惰查询和贪婪查询。
第五章深入研究NHibernate如何严格控制数据库的各种事务。我们在本章中讨论一个业务模型及实例来展示如何自动进行版本控制和锁控制(locking)。缓存是NHibernate的核心,你也会在本章中了解一级缓存和二级缓存大量内容。
第六章介绍了NHibernate的类型系统以及如何引入自定义类型。接着还介绍了组件、值类型和一些高级关联关系,并提供了这些内容的最佳实践方式。
第七章主要介绍如何通过NHibernate进行高效查询。我们测试了HQL和ICriteria API两种查询,并提供了相应实例代码。你将可以看到关于参数绑定,指定查询,多级查询和连接查询。我们同时也研究如何进行有效查询,如何过滤集合,使用原始的SQL而不是HQL,最后,本章还解释如何解决传统的性能问题,讨论n+1个查询问题和缓冲问题。
第八章提供了NHibernate的一些设计模式和实践方法。我们通过示例代码介绍如何实现一些诸如分层系统,单元测试这样的常用应用。同时也包括一些如何找bug的小技巧。同时我们还提供了添加像审核日志这样的自定义服务到NHibernate应用中的例子。
第九章开始讨论开发的流程以及一些有用的工具,通过一个NHibernate应用解释几种着手点。我们同时也研究一些领域模型及数据库关联的代码生成和自动维护模式。紧接着我们还研究了如何通过NHibernate解决传统的数据库的集合键和触发器。
第十章提供了更多现实的应用。我们通过一个简单应用,将它转换成为一个具有持久层和灵活域模型的应用。本章还介绍了一个通用Helper类:DAO模式。最后,我们还介绍了web应用程序session的管理,展示如何进行长期的商业项目和如何实施分布式应用。
代码样式及下载
书本中所有源代码都是 像这样固定宽度的字体 以区分其它正文。同时代码附带了大部分的注释,用于标识重要的概念。在有些地方,一些像 1这样的链接用于表示接下来的列表。
你可以在Manning的网站www.manning.com/kuate或者www.manning.com/NHibernateinAction 下载本书的完整示例代码。
作者在线
购买《NHibernate in Action》了朋友可以免费访问由Manning出版社建立的一个私有论坛,在那里你可以对本书进行评价,问一些技术问题,可以得到作者和其它用户的帮助。如果想访问或订阅该站点,请访问www.manning.com/NHibernatein-Action 或者www.manning.com/kuate。这两个页面提供当你注册之后如何访问该论坛,以及它提供何种帮助和论坛的版规。
Manning承诺提供一个读者与读者之间和读者与作者之间的有意义的交流平台。但是这不是参与该书写作的作者的义务,他们对AO的贡献是出于志愿的(没报酬的)。我建议你问作者他兴趣范围的一些具有挑战性的问题。
作者在线论坛和手稿的讨论区在书本的出版期间都可以从出版社的网站访问到。
关于作者
PIERRE HENRI KUATÉ 是NHibernate团队的一个主要开发者,他是NHibernate.Mapping.Attributes类库的作者,同时也是NHibernate论坛的一个主要贡献者。他非常尽责的管理着NHibernate的文档,网站已经Hibernate.org论坛。同时,他已经在商业应用中使用NHibernate四年多了。
TOBIN HARRIS在NHibernate早期beta版本就开始为他服务了。他热衷于使用工具和实践方法来构建高质量和高性能系统。Tobin为全球上许多不同行业公司工作过,其中包括银行业,个人理财业,卫生保健业,软件公司以及新闻媒体。Tobin获得利兹城市大学软件工程师学位后继续留在利兹城市大学工作。
CHRISTIAN BAUER 是Hibernate开发团队的一员,同时也是一个培训师,顾问以及是负责Hibernate,EJB3.0,JBoss Seam的产品经理。他是Manning出版的《Hibernate in Action》和《Java Persistence with Hibernate》的作者。
GAVIN KING 是JBoss的一个主要开发者,Hibernate的创始人,同时是EJB3.0专家团队的一员。他也领导Web Beans JSR 299的开发,使Hibernate概念,JSF和EJB3.0标准化的贡献者,同时也和Christian合著了上面提到的两本书。
关于标题
这本In Action书通过将简介,概述和如何实例来设计的,它主要用于帮助学习和记忆。自我认知学表明,人们通常对自己主动发现的问题记忆比较深刻。
虽然Manning出版社没有认知科学家,但是我们坚信通过阶段性的挖掘,玩耍,兴趣以及复述才能使自己学到的东西变得更持久。人们只有在积极探索之后才能理解和记住新的事物,或者说精通新的事物。人类通过实践去学习。这本实践向导是通过示例驱动的。他估计读者去尝试它,编写新代码,发掘新的想法。
还有另外关于命名此书的理由,可能比较小:我们的读者都很忙,他们使用该书去解决问题。他们需要该书可以让他们轻易的获取到他们需要的内容。 他们需要一个关于实践的书。而这本书就是为这样的读者编写的。
关于封面插图
《NHibernate in Action》封面的图案是来自1805年版本的Sylvania Marechal丛书的第四卷中的地区穿扮习俗。这本书在在法国大革命前一年1788年出版的。其中的每一幅插画都是通过手工仔细的画和上色。
Maréchal中栩栩如生的图案使我们想起了200年前世界上的城镇和地区是多么的具有人文气息。独立的看这些地方,人们说着不同的方言。他乡村中的街道上,他们很容易就能定居下来,有时候就相差十几英里,单单通过他们的服饰有时候也会认错。
着装的风格随着时间的推移和地区的多样性的变化是如此丰富,现在也消失了。现在已经很难区分不同的大陆之间的着装区别了,更不用说城市很地区了。或许我们的文化交流让我们的个人生活变得更多样化---当然,一个更多样化和快节奏的高科技生活。
当很难分辨计算机书的区别的时候,Manning通过基于区域的两个世纪前生活的丰富多样性为封面来庆祝其计算机书籍业务的独创性和创造力,通过Maréchal的图片带回到实际生活中。