我已经了解了对象角色建模,但没有了解对象关系映射,我想知道它们是否是做同一件事的两种方式,优缺点是什么?对我来说,对象角色建模更有意义。如果可以进行比较,您能否进行简短但易于理解的比较。干杯
3 回答
对象角色建模:软件建模符号,特别是定义领域模型。您可以将此语言视为使用 UML 类图设计数据库的替代方法。更多信息在这里:http ://www.orm.net/
对象关系映射:一组用于弥合面向对象程序和关系数据库之间差距的策略。它旨在允许在关系数据库结构中持久存储对象
对象角色建模是由 Control Data 的一个团队在 1973 年左右发明的,并由 Falkenberg 命名。它是一种植根于语言分析的建模方法,被 Terry Halpin 形式化为一阶逻辑,参见http://orm.net。因此,ORM 是首字母缩写词的原始用户。ORM 和相关建模语言的特点是无属性。这些语言只包含对象和对象类型(事物的种类)、事实和事实类型(个体事物之间的关系)和约束(关于事物和关系可能存在的规则)。没有任何关系具有像实体属性这样的主从特性——这是一个仅在物理映射期间出现的概念,因为它与域的底层语义无关。
对象关系映射(我总是写成 O/RM)是一种方法或工具系列的名称,可帮助在关系形式和面向对象形式之间转换数据。这两种形式都使用基于属性(实体/属性或对象/属性)的聚合或组合事物,但两种方法的聚合原理不同,因此相同的底层语义导致不同的数据结构;因此需要工具来帮助自动化翻译。此外,在 ER 或 OO 分析中,需要尽早决定哪些事物是对象/实体,哪些是属性,这会导致一整类建模错误,而这些错误在 ORM 中根本不会发生。
当然,关系模型和oo模型都可以从ORM模型中自动派生出来,派生形式之间的映射也是自动的、无痛的。我想这不是经常这样做,因为它会让生活变得太容易。
您正在将苹果与橙子进行比较。对象关系映射就是试图克服对象世界和关系数据库之间的阻抗不匹配。
例如,Activerecord 是一个在数据库中包装一行的 ORM。Hibernate 是另一种流行的 ORM
只是 google 的 ORM 维基百科解释得更好
http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch