摘 要:面向对象设计和关系型数据库设计存在很大的不同, 因为对象模型和关系模型两者之间存在“阻抗不匹配”的现象。面向对象设计的理论包括封装、关联、聚合、继承、多态,而关系数据库主要针对数据的存储,其数学依据是关系模型。我们希望可以实现通过面向对象的设计方式来完成业务流程,但是必须考虑的最终如何把对象保存下来。如果存贮介质采用关系型数据库,那么当我们将对象保存到关系型数据库的时候,矛盾也就出现了,这也是我们要做OR-Mapping的主要原因——架起对象和关系型数据库的桥梁。ORM(Object-Relation Mapping)主要解决对象层次的映射、对象关系的映射以及对象的持久化问题。它试图将实体对象的状态映射到RDBMS的数据上,以提供一种透明的持久化操作。
关键词: 面向对象,关系数据库,持久化,对象关系映射
A Design and Implementation of ORM with .NET
Abstract :There is great difference between Object-Oriented Design and Database System Design, because of the Impedance Mismatch between Object Model and Relation Model. Object-oriented design theory includes packaging, relevance, polymerization, inheritance and polymorphism, while Relation Database System(RDBS) mainly focusing on data storage, based on a mathematical relation model. We hope to accomplish business processes through the design of object-oriented methods, this is available. However, it must be considered that how to storage the data. If the storage medium is relational database, the contradictions occur when save the object data as a relation model. This is the main reason we need O-R Mapping which is a bridge between object and relational database. ORM includes object level mapping, object relation mapping and object persistence. It tries to map the entities state to the RDBMS data, in order to support a series of transparent persistency operations.
Key Words: Object-Oriented; RDBS; Object-Relation Mapping; persistency
1 绪论
1.1 课题的背景及目的
面向对象的开发即Object-oriented开发在近年已广为普及,成为软件开发最基本的方法。在面向对象的开发中,数据访问层最基本的数据库操作包括插入对象,删除对象,更新对象和查询对象。几乎所有的项目开发都需要首先需要实现这些操作。而这些操作在几乎所有的项目开发中都很类似,都是把插入对象,删除对象,更新对象和查询对象的这种对象级别的操作转化为底层关系数据支持的insert, delete, update和select等SQL操作。如果在项目需要面对不同的数据库,则还需要为每个数据库开发一个专门的数据访问层。显然这种每个项目都重复但却具备相同模式的代码是一种明显的浪费。这就催生了O/R Mapping技术的产生。ORM将开发人员从这种重复性的劳动解放出来,使其可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。
1.2 国内外研究状况
现在各种ORM中间件产品已经在Java平台上得到了广泛的应用和验证,由于.NET平台是一个年轻的平台,所以在.NET上的产品还不是很丰富,但是很多Java平台上成品在.NET平台正在被重写,并针对.NET平台的特点进行更改。
同时也出现了另一种的解决方式,即提供一种面向对象的数据库。把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。
面向对象数据库很好地解决了阻抗不匹配的问题,但它也有缺点。它的缺点正好是关系数据库的强项,由于模型较为复杂(而且缺乏数学基础),使得很多系统管理功能难以实现(如权限管理),也不具备SQL处理集合数据的强大能力。