Songtao Hu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

NHibernate项目早在2003年由Paul Hatcher开始启动,Mike DoerflerSergei Koshcheyev完成了大量的工作,它已经稳定地成为一个成熟的产品,受到成千上万的.NET开发者的欢迎。

NHibernate原本是日益流行的Java Hibernate项目的一个移植,许多年来,对象/关系映射已经在Java群体中非常流行了。

这一流行的结果就是Java开发者有成堆的关于Hibernate的书可以利用。事实上,最后我发现有15本书是完全专注于讲述这个单一的工具的。关于Hibernate和相关技术的新书仍然在定期地出现。

直到现在,.NET开发者还没有如此豪华阵容的关于学习NHibernate的书籍。这本书的目标是补救这一问题 我们最终拥有专为.NET开发者编写的专注于单一工具NHibernate的“手册”。《NHibernate in Action》基于最畅销的《Hibernate in Action》,而《Hibernate in Action》被认为是JavaHibernate的实际上的手册。这本书不仅仅是一次翻译;事实上,已经做了许多工作来使它来吸引.NET开发者,也包括容纳API的改变,代码的差异,新特性,等等。

我们希望本书的到来被认为是一个好时机。.NET世界最终应为对象/关系映射而变得兴奋,我们希望这本书将帮助你发现、学习和喜爱已有的最成熟、强有力的ORM框架之一。

谁应该阅读本书

本书是为工作于Microsoft .NET的开发者而编写的。开发者和架构师都应该能从本书中提取价值,不论他们对于NHibernateORM是新手,还是已经获得了一些经验。

对于那些新接触NHibernate的人们,这本书没有假定任何优先的知识。我们同样不期待你在之前已经使用过任何对象/关系映射框架。我们的想法是你能从本书中获取知识,然后开始运用这些知识构造NHibernate解决方案。

我们同样预期许多阅读本书的读者可能已经在一些项目中使用NHibernate,不论是NHibernate本身还是作为其他库比如Castle Active RecordSpring.NET的一部分。如果你想要了解发生在幕后的进一步的信息,本书可以帮助你。它也会帮助你发挥NHibernate的杠杆效应,并且理解怎样完全发挥它们的优势。

我们已经尽了最大努力尽可能地为你提供这么多的背景细节,这些细节同时包括了通常的和不那么通常的关于NHibernate的用法。我们覆盖了很多在论坛和博客中很少提到的主题,比如持久化的生命周期和更多的外来映射能力。

不论你是一个NHibernate的新手还是经验丰富的用户,我们希望本书将教给你新的事物,增加你的快乐并且成功地用好这个工具。

路线图

1章建立场景,解释持久化是什么以及它怎样适应商业应用。我们来领略一下NHibernate,将它和其他流行的途径例如LINQ to SQL和数据集(DataSets)进行比较。你将学习在对象/关系映射方面已经引发的根本性问题,而NHibernate是如何解决它们的。

2章将一些代码呈现到你面前!我们关于NHibernate的一个简短旅程带你从安装NHibernate到构建和运行一个简单的应用程序。然后我们继续浏览NHibernate中可用的主要设施,包括用于查询的API,事务和定制化。我们在基础的和高级的配置技术中圆满结束这一旅程,并且展示了你怎样使用日志来获得关于NHibernate怎样在后台工作的一个深度的视角。

3章通过学习NHibernate的大部分能力,为你带来更大的进步。我们着手于一个更加复杂的问题 – CaveatEmptor应用程序 并且随着使用各种类型的关联(associations)的映射,从头到尾地指导你进行领域模型建模。你将学习NHibernate怎样允许用XML.NET属性(attributes)进行映射。我们也解释了一些更加充满智慧的能力,诸如灵活的属性(property)映射和自动命名约定。在通过解释更多关于对继承和关联(associations)进行映射来基于先前的知识构建之前,这一章也解释了在ORM中的标识的重要性。

4章提供了对于一些重要概念的进一步的深刻理解:实体生命周期,持久化状态,等价(equality)。我们研究这方面的知识怎样可以通过NHibernateAPI来促进。我们同样研究怎样工作于整个的对象图(object graph),讨论级联的持久化,批处理,惰性获取和即时获取。

5章深入研究使用NHibernate来获得对数据库事务的严格控制。接着我们讨论长时间运行的业务事务和怎样达到自动化版本控制和锁定的目的。缓存是NHibernate的核心,在这里你将学到很多关于第一级和第二级缓存的知识。

6章介绍NHibernate类型系统以及怎样实现定制的用户类型。我们转移到讨论部件,值类型,并工作于更高级的关联,指出与它们一起工作时的一些最佳实践。

7章聚焦于高效的查询。我们对HQLICriteria API都进行了检测,对每种方式都给出了很多代码示例。你将看到关于参数绑定,命名查询,多态查询,和连接(join)的丰富的细节。我们同样研究你怎样运行有效的报表查询,使用集合过滤器(collection filter),使用原生SQL而不是HQL。最后,这一章着眼于解决通常的性能问题,讨论n+1选择问题和缓存。

8章提供了围绕NHibernate的模式及实现的匆匆一瞥。我们给出了对于像分层应用程序和单元测试这样的通常实践的示例代码。也包括一些对于在你的应用程序中查找bug的有帮助的技巧。我们也给出了添加额外的服务,例如审计日志,到NHibernate应用中去的示例实现。

9章开始于讨论开发过程和可用的工具,解释了对于一个NHibernate应用程序的各种起始点。我们也看一看,为了领域模型和数据库的协同演进而进行的代码生成和自动化的架构管理。我们接着研究与遗留系统的数据库一起工作,解释了对于处理像组合键和触发器这类事物的一些努力和测试过的技巧。

10章给出了更多现实世界的知识。我们研究将一个样本应用程序重构为多层系统,有一个良好定义的持久层和一个巧妙的领域模型。这一章也介绍泛型的DAO模式,和一个有用的NHibernate帮助类(Helper class)。最后,我们研究web应用程序的会话(session)管理,实现长时间运行的业务会话(conversations),同时也演示了怎样实现分布式事务。

编码约定和下载

列表中或文本中的所有源代码是有别于普通文本的像这样的固定宽度字体。代码注释伴随着大量的列表,高亮显示的重要概念。在一些情况下,编号的项目符号链接到和跟随这些列表的说明。

本书的完整的示例代码可以从以下的Manning web站点下载:www.manning.com/kuatewww.manning.com/NHibernateinAction 

作者在线

购买《NHibernate in Action》包括了可自由访问由Manning出版社运行的私有站点,在那里你可以书籍进行评论,咨询技术问题,从主要作者和其他使用者获取帮助。要访问论坛和提交信息,请定位你的浏览器到 www.manning.com/NHibernateinAction www.manning.com/kuate 。这个页面提供了一旦你注册之后怎样登入论坛的信息,可以获得哪些帮助,以及论坛上的行为规则。

Manning对于我们读者的承诺是,提供一个场所,以便于作为个体的读者以及读者和作者之间可以进行有意义的对话。就作者而言,任何具体数额的参与都不是一种承诺,他们对于作者在线(Author Online)的贡献保持着自愿性质(也是没有报酬的)。我们建议你尽量询问作者一些有挑战性的问题,以免他们的兴趣迷失!

作者在线论坛和先前讨论的归档将可以通过出版社的web站点来访问,只要该书出版了。

关于作者

PIERRE HENRI KUATE NHibernate项目组的主要开发者之一,是NHibernate.Mapping.Attributes库的作者,同时也是NHibernate论坛的一位主要贡献者。他负责管理NHibernate文档,web站点,还有Hibernate.org站点的论坛。至少在四年之前,他就开始在商业开发中使用NHibernate了。

TOBIN HARRIS早在NHibernate还是beta版时,就已经使用它工作了。他对于有助于高速度地构建优质软件的工具和实践充满热情。作为一名独立的顾问和企业家,Tobin和跨越全球的各个领域的公司一起工作,包括银行,个人财务,医疗保健,软件构件和新媒体。Tobin在利兹都大学获得软件工程学位,然后继续工作和生活在英国利兹市。

CHRISTIAN BAUERHibernate开发组和一位成员,同时也是Hibernate,EJB 3.0JBossJBoss Seam的培训师、顾问和产品经理。他是Manning出版的《Hibernate in Action》和《Java Persistence with Hibernate》的第一作者。

GAVIN KINGJBoss的主要开发者之一,也是Hibernate创建者,EJB 3.0(JSR 220)专家组的成员。他也领导了Web Beans JSR 299,一套涉及Hibernate概念、JSFEJB 3.0的标准化的努力。也是Christian的上述提到的两本书的合著者。

关于标题

结合介绍、概述和入门实例,In Action系列书被设计为帮助学习和记忆。根据认知科学的研究,人们记住的是那些在自我激励的探索中发现的事物。

尽管Manning出版社没有人是认知科学家,但是我们确信要使学习成为永久性的,就必须穿越探索、操纵,还有饶有兴趣地复述所学到的,等等这些阶段。人们理解和记忆新的事物,也就是说他们只有在主动地探索那些事物之后才能掌握它们。人类是在行动中学习的。一个“在行动中”指南的本质部分是它是实例驱动的。它鼓励读者尝试新鲜事物,玩新代码,探索新的想法。

对于本书的标题有另一个,更加常规的理由:我们的读者是忙碌的。他们使用书籍来做一份工作或解决一个问题。他们需要那些能够很容易地让他们在书籍和工作之间来回切换的书籍,并且仅仅在他们需要的时候学习他们需要的那一部分。他们需要能够帮助他们“行动”的书籍。这一系列的书籍被设计成针对这样的读者。

关于封面插图

NHibernate in Action》的封面插图取自1805年版的Sylvain Marechal的地区服饰习惯的四卷纲要。这本书首先于1788年在巴黎出版,在法国大革命的前一年。每一幅插图都绘制得很精细,而且是手工上色的。

Marechal所收藏的华美的品种提醒我们,世界的城镇和地区的文化意义上的鲜明个性仅仅在200年前都还是如此的生动。相互隔绝,人们说着不同的语言和方言。在街道和乡村,仅仅通过他们的服饰,就很容易辨认 有时会有不超过12英里的错误。

随着时间的推移和区域多样性,各地的着装风俗也在变化,当时是如此丰富,而今却渐渐消失。现在,很难分辨出不同大洲的居民,更不用说不同的城市和地区。也许,我们为了一种更多样化的个人生活,已经牺牲了文化的多样性 当然是为了一个更加多样化和快节奏的科技生活。

当我们很难将一本计算机书籍区分于另一本的时候,Manning用基于两个世纪前的,被Marechal的图片带回到的,地区生活的丰富多样性的书籍封面,来赞美计算机业务的创造性和主动性。

posted on 2012-04-20 20:19  Songtao Hu  阅读(213)  评论(0编辑  收藏  举报