什么是对象/关系不匹配

时间:2016-07-11 11:10:52

标签: java hibernate orm

我是java的新手,正在阅读有关对象关系映射的内容。我在此链接Hibernate

上找到了对象/关系不匹配的术语

任何人都可以用Java来解释什么是对象/关系不匹配。 我也从haacked.com读到了它,但是无法正确理解。用例子进行解释会很明显。

2 个答案:

答案 0 :(得分:4)

Hibernate是一个ORM(对象关系映射)工具。它的主要目的是将面向对象编程(例如类,继承和字段)中的概念转换为关系数据库中使用的概念,例如表,行和列。

例如,类对应于数据库表,对象(类的实例)对应于数据库行,而字段对应于数据库列。

术语“对象/关系不匹配”指的是没有明确的方法将所有概念从面向对象的编程转换为关系数据库概念,反之亦然。 Hibernate试图解决这个问题。

例如,如何将继承转换为关系数据库概念?在关系数据库中没有继承这样的东西,因此必须发明某种方式来在数据库中表示这一点。 Hibernate有不同的方法来实现这一点,例如,通过为类层次结构提供一个表,使用一个鉴别器列来确定行映射到哪个子类,或者通过每个子类有一个表。

同样,关系数据库中存在的概念无法轻易转换为面向对象的编程概念。

答案 1 :(得分:-1)

ORM解决方案试图让面向对象的程序员忘记他们使用关系数据库并仅处理对象。

从面向对象语言和SQL之间的区别开始。面向对象语言是程序性的; SQL是声明性的。

对象是将状态和行为一起封装到单个软件组件中的类的实例。关系数据库表示遵循集合论的实体之间的关系。

对象可以使用继承和组合。表可以连接在一起。

我没有读过Hibernate文章,但这些是我能想到的三个主要差异。看看这些是否以与你产生共鸣的方式编写。