为什么要提出O/R Mapping概念
程序语言已经由面向过程的模型全面转向为面向对象的模型,UML的出现更加革新了软件开发方法论。然而数据库模型却从未随着开发语言的进步而随之革新,仍然使用面向关系的数据库模型。关系模型对现实世界的建模通常是不可能的,反过来讲,现实世界的对象实体必须转变成行和列的格式存放在数据库中,这样使得面向对象的开发方法论的优势无法全面呈现出来,应用程序简洁性也遭受到损害。
O/R Mapping能避免繁琐的数据访问细节,对象和关系的行列转换都由O/R Mapping完成,不需要写过多的数据访问细节代码,面向对象的概念和关系数据之间的映射可抽象成为单个组件的职责,独立于应用程序之外。
O/R Mapping概念
O/R Mapping实际是通过一系列设计模式,使得原本需要硬编码在程序中的SQL语句可以由程序动态产生,或者将SQL语句写入XML配置文件中,通过API访问获取SQL语句返回的对象查询结果,而不是ResultSet这类对象。
这样带来的优点是业务代码与数据访问细节完全隔离,将数据访问抽取提升到组件的层次。
O/R Mapping的访问模型和设计模式主要分如下几类:
领域逻辑模型(Domain Logic Patterns)
数据源架构模式(Data Source Architectural Patterns)
对象-关系行为模式(Object-Relational Behavioral Patterns)
对象-关系结构模式(Object-Relational Structural Patterns)
对象-关系元数据映射模式(Object-Relational Metadata 、Mapping Patterns)