我是Java的新手,正在阅读有关对象关系映射的信息。 我在此链接上发现了一个术语"对象/关系不匹配"
谁能用Java解释什么是对象/关系不匹配。
我也从haacked.com上了解到它,但无法正确获取它。
什么是对象关系映射框架的可能重复项?
没有它不是重复的,因为在那个问题上没有人讨论过对象关系不匹配。 我从那里阅读对象关系映射,但是我对对象关系不匹配感到困惑,没人在那里讨论过。
Hibernate是一种ORM(对象关系映射)工具。其主要目的是将概念从面向对象的编程(例如类,继承和字段)转换为关系数据库中使用的概念(例如表,行和列)。
例如,类对应于数据库表,对象(类的实例)对应于数据库行,字段对应于数据库列。
术语"对象/关系不匹配"是指以下事实:没有明确的方法将所有概念从面向对象的编程转换为关系数据库的概念,反之亦然。 Hibernate尝试解决此问题。
例如,如何将继承转换为关系数据库概念?关系数据库中没有继承之类的东西,因此必须发明某种方式在数据库中表示继承。 Hibernate有不同的方法来执行此操作,例如,为类层次结构使用一个表,并使用一个鉴别符列确定行映射到哪个子类,或者每个子类都有一个表。
同样,关系数据库中存在一些无法轻易转换为面向对象编程概念的概念。
这并非严格如此。 表和类并不按照您所暗示的方式映射1:1。 对象组合表示单个对象可能需要多个表的JOIN来表示1:m和m:n关系。 关系是基于集合的; 对象不是。
ORM解决方案试图使面向对象的程序员忘记使用关系数据库而只处理对象。
从面向对象的语言和SQL之间的区别开始。 OO语言是程序性的; SQL是声明性的。
对象是将状态和行为封装到单个软件组件中的类的实例。关系数据库表示遵循集合论的实体之间的关系。
对象可以使用继承和组合。表可以联接在一起。
我没有阅读Hibernate文章,但是这些是我能想到的三个主要区别。看看这些文字是否与您产生共鸣。