论文部分内容阅读
面向对象设计的机制与关系模型的不同,造成了面向对象设计与关系数据库设计之间的不匹配,本课题的背景就是建立这种不匹配的基础之上。面向对象设计基于如耦合、聚合、封装等理论,数据绑定在对象上,并由对象中的方法处理。而关系模型基于数学原理,是以行、列和表的形式存储数据。不同的理论基础导致了不同的优缺点。对象模型侧重于使用包含数据和行为的对象来构建应用程序;关系模型则主要针对于数据的存储。当为访问数据寻找一种合适的方法时,这种不匹配就成为了主要矛盾:使用对象模型,常常通过对象之间的关系来进行访问;而根据关系理论,则通过表的连接、行列的复制来实施数据的存取。这种基本的不同使两种机制的结合并不理想。换言之,需要一种映射机制来解决该矛盾,从而获得成功的设计。本课题主要工作是开发一种“基于ORM的数据映射工具”。目标是解决在以数据库为中心的应用程序中使用对象所面临的上述问题。该工具可以使应用程序能够使用一个关系型数据库透明地存储和检索对象。解决方案是使用元数据方案来描述业务对象与数据库是如何对应的。在运行时,该工具使用元数据自动生成SQL、运行请求并根据结果构建对象。这意味着你不仅无须对你的业务对象进行任何基于SQL的硬编码,无须创建特定超类的子类或使用生成的代码,不必了解任何有关SQL或数据库的知识。你只需直接处理对象,就好像处理任何普通的Java对象一样。该工具由两个功能模块组成:Mapping Workbench(映射工作台)和DataAccess Object(DAO数据访问对象层)。Mapping Workbench提供图形化界面用来构建将对象映射到数据库的元数据。这个工具使你能够将Java类映射到存储其实例的关系数据库表中,同时也将类的属性映射到相关表的字段中。该工具使用由Mapping Workbench生成的元数据来描述业务对象与一个特定的数据库模式是如何对应的。第二个功能模块数据访问层封装了对数据库的访问,允许开发人员专注于商业领域的问题。即意味着,封装访问数据库的类以为开发者提供足够简单的CRUD接口(select、insert、delete、update、selectInfoSet等接口),来实现对数据库的增、删、改、查询等功能。另外,对数据库设计也提供了封装,使开发者无需了解数据库的私有实现。DAO层彻底地隐藏了存储机制,隔离了可能的修改。数据访问层需要元数据提供映射对象所需要的信息。当商业规则如同以往发生变化时,DAO层的代码应无需改变。另外,如果数据库更改时,可能是安装新的数据库或是DBA重组数据表,唯一所需要修改的是元数据中的信息。当你操作业务对象时,该工具就会构建SQL查询来更新数据库。这是一个自动化的过程,这样就减少了对数据库的依赖性,更加便于维护,同时使对SQL语句不熟悉的开发人员也能够根据业务域编写查询。该工具负责所有生成SQL的任务并返回代表结果的对象。本课题的理论与实际意义是提供一种易于使用的自动数据映射工具,它有助于解决在以数据库为中心的应用程序中使用对象所面临的这些问题。它可以使应用程序能够使用一个关系型数据库透明地存储和检索对象。该技术在以面向对象技术建构的系统和传统的关系数据库间进行自动映射,无需编写SQL语句,持久化存取。甚至复杂的查询也能够无需手工编写SQL语句,极大地降低了开发工作量。