2016-07-11 67 views
-1

我是java的新手,正在阅读关于对象关系映射。我发现这个链接Hibernate什么是对象/关系不匹配

上的一个术语对象/关系不匹配谁能解释一下什么是Java方面的对象/关系不匹配。 我也从haacked.com了解它,但不能正确得到它。与示例的解释将是可观的。

+0

[什么是对象关系映射框架?]可能重复(http://stackoverflow.com/questions/1152299/what-is-an-object-relational-mapping-framework) –

+0

不是它的重复在那个问题中没有人讨论过关于对象关系不匹配的问题。我从那里本身读对象关系映射,但是我对对象关系不匹配感到困惑,这是没有人讨论过的。 –

回答

3

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

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

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

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

同样,存在于关系数据库中的概念不易被翻译成面向对象的编程概念。

+0

这不完全正确。表格和类别不按照您暗示的方式映射1:1。对象组合说,单个对象可以要求多个表的JOIN来表示1:m和m:n的关系。关系是基于集合的;对象不是。 – duffymo

-1

ORM解决方案,尽量做到有可能面向对象的程序员忘记自己正在使用的关系型数据库,只有在物体处理。

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

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

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

我没看过Hibernate的文章,但这些将是三,我能想到的主要区别。看看这些文章的写作方式是否与你产生共鸣。