65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 O/R 映射工具的五大理由

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.20/5 (5投票s)

2005年3月17日

5分钟阅读

viewsIcon

37249

O/R 映射工具为您的 .NET 应用程序生成持久化对象。

引言

那么,您为什么要使用任何 O/R 映射工具呢?我不是指某个特定的工具,而是泛指所有的 O/R 映射工具。使用 O/R 映射工具有很多原因,但在我深入探讨之前,让我先简单介绍一下 O/R 映射工具到底是什么。

O/R 映射工具为您的 .NET 应用程序生成持久化对象。它是一个建模和代码生成工具,可以连接到您的数据库并读取其架构,然后允许您将对象映射到数据库表和视图,并为这些对象指定单个行的插入、更新、加载和删除操作,以及查询和存储过程调用,作为这些对象的方法。此外,它还允许您根据数据库中表之间的关系,在对象之间定义一对一、一对多、多对一和多对多关系。然后,它会为您生成功能齐全的持久化对象代码。

一个好的 O/R 映射工具还提供了许多其他功能,但我会尽量简述,以便有更多时间讨论其优点。

原因 1:缩短开发时间

O/R 映射工具的第一个好处是它可以为您节省大量开发时间(根据您的情况,节省 20% 到 50% 的时间)。当然,O/R 映射工具并不会为您生成什么“火箭科学”代码,如果您愿意,完全可以手动完成。但是,这涉及到大量繁琐的工作,如果您不必自己动手,一定会更开心。让我们做个简单的计算。

一个典型的包含 15-20 个数据库表的应用程序,会有 30-50 个对象(包括域对象和工厂对象),这大约是 5000 到 10,000 行代码。开发和测试这些代码可能需要几周到几个月的时间。如果您的应用程序有更多的表(许多应用程序都是如此),那么只需将上述数字乘以相应的倍数即可。

另一方面,O/R 映射工具可以在一两天内为您生成这些代码。即使是这样,您也主要需要这 1-2 天来确定您的对象与数据库的映射关系。实际的代码生成是即时的。所以,您的时间节省是巨大的。

原因 2:生成更好的设计代码

O/R 映射工具的第二个好处是,与手动编写代码相比,它可以让您生成更好的设计代码。我知道您在想什么。您认为您比 O/R 映射工具做得更好,因为您编写代码的每一个方面。你们中的一些人肯定可以,但不是所有人。请考虑这一点。一个普通的开发团队拥有不同水平的专业知识和经验,并非每个人都是优秀的设计师。因此,他们可能不会在代码中遵循设计模式,最终导致代码质量较低。而且,如果多个开发人员编写代码,他们的代码很可能彼此不一致。不一致本身就是应用程序代码质量差的一个主要来源。

另一方面,一个好的 O/R 映射工具使用代码模板,这些模板设计精良,因为它们是由非常资深的(架构师级别的)工程师设计和创建的。而且,这些代码模板始终遵循已知的设计模式。因此,您从 O/R 映射工具生成的代码很可能比您自己的开发团队设计的代码更优。

原因 3:您不必是 .NET 专家

使用 O/R 映射工具的第三个好处是,您不必是 .NET 专家即可开发您的持久化代码。众所周知,数据访问代码对您应用程序的整体性能至关重要。如果这些代码设计和开发不当,可能会严重影响您的应用程序。因此,如果您手动开发这些代码,就需要精通 .NET、COM+、无状态组件和 MTS。

但是,如果您使用 O/R 映射工具,您可以主要专注于持久化对象的“逻辑设计”,包括对象映射以及与数据库的各种交互,如插入、更新、加载、删除、查询、存储过程调用、关系等。而 O/R 映射工具将完成其余的工作。它将确保生成的代码遵循编写无状态 .NET 组件以在 COM+ 和 MTS 中运行的所有最佳实践。

原因 4:节省测试时间

O/R 映射工具的第四个好处是,它可以极大地减少您的测试工作量。如果您手动开发了所有持久化代码,您也需要自己负责测试。而且,您知道,在任何项目中,测试所需的工作量与开发一样大。

另一方面,如果您从 O/R 映射工具生成代码,这些代码来自软件供应商本身已经过彻底测试的代码模板(比您自己测试更充分,因为这是他们的主要关注点)。此外,数百甚至数千的其他客户也在使用此工具,并已测试过从该 O/R 映射工具生成的代码。因此,许多您在自己的测试中可能找不到的 bug 已经在 O/R 映射工具生成的代码中被发现并修复了。

原因 5:简化您的 .NET 开发

如果您必须自己编写所有持久化代码,您会被 ADO.NET、COM+、MTS、无状态 .NET 组件等的细节所困扰。您最终会花费大量时间处理那些您实际上不需要关注的细节。另一方面,如果您从 O/R 映射工具生成代码,您将获得设计良好的对象,而您只需要处理它们的公共接口。

下面是一个如果您使用 O/R 映射工具将编写的代码示例

try { 
    Employees objInfo = new Employees();
    EmployeesFactory objFactory = new EmployeesFactory();
    objInfo.EmployeeID = EmployeeID; 
    objFactory.Load(objInfo); 
// code here to use the “objInfo” object 
} 
catch(Exception ex) { 
    // code here to handle the exception 
    return; 
}

如您所见,生成的代码比您自己编写 .NET 组件要简单得多。

许多人从未听说过 O/R 映射工具,也有很多人听说过但不敢使用。我希望我已经为您在此提出了一个强有力的理由,让您认真考虑在您的项目中使用 O/R 映射。

© . All rights reserved.