1 在.NET中的对象/关系持久化

本章覆盖

n  .NET持久化和关系型数据库

n  .NET应用程序分层

n  .NET中实现持久化的途径

n  NHibernate怎样解决关系型数据库中的对象持久化

n  高级持久化特征

 

软件开发是一个千变万化的学科,期间新技术和新工艺不断涌现。作为软件开发者,我们拥有可用的数量庞大的工具和实践,从中选取正确的工具和实践常常导致成就或者破坏一个项目。其中一个被认为特别关键的选择就是怎样管理持久化数据 或者,更简单一点,怎样加载和保存数据。

可用的选项几乎是无止尽。你可以用二进制或者文本文件将数据保存在磁盘上。可以选择一种格式,诸如CSVXMLJSONYAML或者SOAP,或者发明你自己的格式。作为另一选择,你也可以在网络上将数据发送给其他的应用程序或服务,例如关系型数据库,活动目录(Active Directory)服务,或者一个消息队列。你甚至可能需要在几个地方存储数据,或者将这些选项绑定在一个单一的应用程序中。

你可能会开始意识到,管理持久化数据是一个棘手的主题。关系型数据库非常流行,但是在你的日常工作中仍然会面临许多选择、问题和选项。例如,你应该使用DataSets,还是DataReaders更合适些?你应该使用存储过程吗?你应该硬编码你的SQL语句,还是让工具来动态生成?你应该将你的DataSets强类型化吗?你应该构建一个包含类的手工编码的领域模型吗?如果是的,那么你怎样从数据库加载数据并且将数据保存回数据库?你是否应该使用源代码生成?这里问题的列表会继续。

这个主题不是仅限于.NET。整个开发社区都在讨论这个主题,时常还很激烈,并且已经持续好多年了。

但是有一个途径已经得到了普遍的流行:对象/关系映射(object/relational mapping)(ORM)。这些年出现了许多库和工具,来帮助开发者在他们的应用程序中实现ORM。其中之一就是NHibernate – 一个针对.NET的复杂而成熟的对象/关系映射工具。

NHibernate是流行的Java Hibernate库的一个.NET移植。NHibernate的目标是成为一个工作于关系型数据库和领域模型类时管理持久化数据方面的完整的解决方案。它致力于将应用程序和数据库之间协调的艰难工作承担起来,将你从中释放出来,从而使你能够专注于手头上的业务问题。本书同时覆盖了NHibernate的基础和高级用法。本书也为使用NHibernate开发新的应用推荐了最佳实践。

在我们可以开始使用NHibernate之前,对于你来说,理解持久化究竟是什么,以及可以使用.NET框架来实现持久化的各种方式,是有用的。这一章将解释为什么像NHibernate这样的工具是必需的。

我是否需要阅读所有的背景信息?

不。如果你希望立即尝试NHibernate,跳到第2章,在那一章你将跃进到开始编码一个小型的NHibernate应用程序。你将能够在没有阅读第1章的情况下理解第2章,但是如果你是一个.NET持久化方面的新手的话,我们推荐你阅读第1章。这样的话,你就能够理解NHibernate的优势,以及为什么要使用它。你也将学习类似工作单元(unit of work)这样的重要概念。如果你对于这个讨论感兴趣,你不妨继续阅读第1章,获得关于.NET持久化的大概的想法,然后继续前进。

首先,我们定义在.NET应用程序上下文中的持久化的概念。接着,我们演示一个经典的.NET应用程序是怎样使用.NET框架中可用的标准的持久化工具来实现的。你将会发现一些通常的困难,这些困难是在同时使用关系型数据库和像.NET这样的面向对象框架时所遭遇到的,同时,你将发现流行的持久化途径是怎样试图解决这些问题。总体而言,这些议题提及了在面向对象和数据库设计之间的范式不匹配(paradigm mismatch)。接下来,我们介绍NHibernate所采取的途径,并且讨论它的许多优势。然后,我们深入讨论一些复杂的持久化方面的挑战,正是这些挑战在本质上造就了NHibernate这样的工具。在这一章的结尾处,你将会对于使用NHibernate能够带来的显著好处有一个清晰的思路。

posted on 2012-04-20 21:52  Songtao Hu 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/songtaohu/archive/2012/04/20/2460594.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值