什么是与Hibernate和JDBC相关的对象/关系映射(ORM)?

有人可以解释一下,与Hibernate和JDBC相关的对象/关系映射(ORM)是什么?

图表对于理解……

编辑:我发现这是通过谷歌的Hibernate ORM,有人可以确认它是准确的,并很好地表示如何使用ORM。

在此处输入图像描述

src: http : //software-carpentry.org/3_0/summary.html

ORM允许您使用java对象作为关系数据库的表示。 它映射了两个概念(面向对象和关系)

Hibernate是一个ORM框架 – 您描述了如何在数据库中表示对象,而hibernate处理转换。

JDBC是用于数据库访问的API,它以“关系方式”工作 – 您查询表并获取行和列。 Hibernate使用JDBC来获取数据,然后将其转换为对象。

jdbc ResultSet有多个记录,每个记录都有一组列。 在hibernate中,这变成了List ,其中SomeClass has a field for every column in the database table, and there is one instance of数据库记录SomeClass has a field for every column in the database table, and there is one instance of SomeClass` SomeClass has a field for every column in the database table, and there is one instance of

我正在阅读Hibernate并偶然发现了这个post。 进一步研究,我发现了另一个可能有助于某人的重要解释:

Hibernate框架简化了java应用程序的开发,以便与数据库进行交互。 Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。

ORM工具简化了数据创建,数据操作和数据访问。 它是一种将对象映射到数据库中存储的数据的编程技术。

在此处输入图像描述

Hibernate的优点:

1)Opensource和Lightweight: Hibernate框架是LGPL许可下的开源和轻量级。

2)快速性能: hibernate框架的性能很快,因为缓存是在hibernate框架内部使用的。 hibernate框架的第一级缓存和第二级缓存有两种类型的缓存。 默认启用第一级缓存。

3)数据库独立查询: HQL(Hibernate Query Language)是面向对象的SQL版本。 它生成数据库独立查询。 因此,您不需要编写特定于数据库的查询。 在Hibernate之前,如果为项目更改了数据库,我们还需要更改SQL查询,这会导致维护问题。

4)自动创建表: Hibernate框架提供了自动创建数据库表的工具。 因此无需手动在数据库中创建表。

5)简化复杂连接:在hibernate框架中,从多个表中获取数据很容易。

6)提供查询统计和数据库状态: Hibernate支持查询缓存,提供有关查询和数据库状态的统计信息。

来自javatpoint的信息

按照你的图表,我们有一个Person类,它有数据成员:Login,Surname,FirstName和Address。 现在每个Person对象的地址是Address类的对象。

现在看一下数据库表。 我们有一个对应于Person类的Person表和一个Address类的Address表。 现在这两个表之间存在关系。 地址表(ID)的主键映射到Person表的外键(addr)。 这样就可以在两个表之间建立关系。

但对于我们的Person和Address类,我们没有这种关系。 所以我们要做的是将地址视为一个单独的对象,然后与Person类集成。 因此,我们实际上正在使用面向对象的方法来妥协以匹配表的关系方法。 这实际上是解决这个问题的一种非常糟糕的方法,因为我们处理表中的数据和使用对象的类之间存在巨大的差距。

这个问题在所谓的对象关系映射(ORM)中得到解决,其中我们匹配面向对象和关系的两个概念。 ORM允许您使用java对象作为关系数据库的表示。

Hibernate是一个ORM框架 – 您描述了如何在数据库中表示对象,而hibernate处理转换。