您的位置:首页 > 移动开发 > Objective-C

ORM(Object Relational Mapping,对象/关系映射)

2008-05-16 12:42 337 查看
ORM(Object Relational Mapping,对象/关系映射)

在考虑O/R Mapping的时候,有两个概念是经常会接触的,那就是VO和PO。

所谓的VO,就是Value Object,这种对象,只包含了对象的数据,而没有状态,或者说,处于瞬时状态。VO可以用来在层之间传递数据。

所谓PO,就是Persistent Object,就是持久化保存的对象,这种对象,一般是有状态的。O/R Mapping框架需要根据PO的状态,来执行相应的同数据库的交互。

在支持OO的语言中,继承是语言的基本特征。在ORM中,将一个继承体系映射到数据库表中,一共有三种映射策略。

Table per concrete class:每一个具体的类对应一张表。在这种策略下,从关系模型中完全抛弃多态和继承关系,将一个类映射到一个数据库表中,这个类的所有属性(包括从父类继承来的)映射的集合组成这个表的列。

Table per class hierarchy:每一个继承体系对应一张表。在这种策略下,通过不规则的关系模型支持多态,用一个识别器列(discriminator column)来标识类型信息,将具有相同父类的所有类都映射到一个数据库表中,这些类属性映射的集合组成这个表的列。

Table per subclass:每一个子类对应一张表,在这种策略下,通过外键关系来表示出继承关系,将每个类映射到对应的一个表,这个类的属性(不包括从父类继承来的非主键属性)映射组成这个表的列,在这种模式下,具有继承关系的类被映射到不同的表中。

对象关系型映射,最核心的要完成两个功能:对象和关系型之间的映射规则,以及两者之间的相互转换。

除了这两个基本的功能,一般的O/R Mapping产品还会加上一些额外的特性和功能,以加强产品的功能,为软件开发提供更多的方便和提高性能。一些常见的功能,例如缓存。

现在有一些典型的O/R Mapping框架可以参考和使用,比较著名的有EJB中的Entity Bean,JDO,Hibernate等,这些方案都是基于Java的。在Microsoft.Net平台下,相对来说可供选择的方案比较少,其中有NHibernate。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: