有人可以用外行的术语解释与Hibernate和JDBC相关的对象/关系映射(ORM)是什么?
图表对于理解......会非常有帮助。
编辑:我发现这是通过谷歌的Hibernate ORM,有人可以确认它是准确的,并很好地表示如何使用ORM。
答案 0 :(得分:33)
ORM允许您使用java对象作为关系数据库的表示。它映射了两个概念(面向对象和关系)
Hibernate是一个ORM框架 - 您描述了如何在数据库中表示对象,而hibernate处理转换。
JDBC是用于数据库访问的API,它以“关系方式”工作 - 您查询表并获取行和列。 Hibernate使用JDBC来获取数据,然后将其转换为对象。
jdbc ResultSet
有多条记录,每条记录都有一组列。在hibernate中,这变为List<SomeClass>
,其中每个数据库记录SomeClass has a field for every column in the database table, and there is one instance of
SomeClass`。
答案 1 :(得分:5)
我正在阅读Hibernate并偶然发现了这个帖子。做了进一步的研究,我发现了另一个可以帮助某人的重要解释:
Hibernate框架简化了java应用程序的开发,以便与数据库进行交互。 Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。
ORM工具简化了数据创建,数据操作和数据访问。它是一种编程技术,可将对象映射到数据库中存储的数据。
Hibernate的优点:
1)开源和轻量级: Hibernate框架是LGPL许可下的开源软件,轻量级。
2)快速性能: hibernate框架的性能很快,因为缓存是在hibernate框架内部使用的。 hibernate框架的第一级缓存和第二级缓存有两种类型的缓存。第一级缓存由默认启用。
3)数据库独立查询: HQL(Hibernate Query Language)是面向对象的SQL版本。它生成数据库独立查询。因此,您不需要编写特定于数据库的查询。在Hibernate之前,如果为项目更改了数据库,我们还需要更改SQL查询,这会导致维护问题。
4)自动创建表: Hibernate框架提供了自动创建数据库表的工具。因此,无需手动在数据库中创建表。
5)简化复杂连接:在hibernate框架中,从多个表中获取数据很容易。
6)提供查询统计信息和数据库状态: Hibernate支持查询缓存,并提供有关查询和数据库状态的统计信息。
的信息答案 2 :(得分:1)
按照你的图表,我们有一个Person类,它有数据成员:Login,Surname,FirstName和Address。现在每个Person对象的地址是Address类的对象。
现在看一下数据库表。我们有一个对应于Person类的Person表和一个Address类的Address表。现在这两个表之间存在关系。地址表(ID)的主键映射到Person表的外键(addr)。这样就可以在两个表之间建立关系。
但对于我们的Person和Address类,我们没有这样的关系。所以我们要做的是将地址视为一个单独的对象,然后与Person类集成。因此,我们实际上正在使用面向对象的方法来妥协以匹配表的关系方法。这实际上是解决这个问题的一种非常糟糕的方法,因为我们处理表中的数据和使用对象的类之间存在巨大的差距。
这个问题在所谓的对象关系映射(ORM)中得到解决,其中我们匹配面向对象和关系的两个概念。 ORM允许您使用java对象作为关系数据库的表示。
Hibernate是一个ORM框架 - 您描述了如何在数据库中表示对象,而hibernate处理转换。