【发布时间】:2011-10-27 10:14:54
【问题描述】:
有人可以用通俗的话解释一下与 Hibernate 和 JDBC 相关的对象/关系映射 (ORM) 是什么吗?
图表对理解特别有帮助...
编辑:我通过 google 为 Hibernate ORM 找到了这个,有人可以确认它是准确的,并且很好地代表了 ORM 的使用方式。
【问题讨论】:
有人可以用通俗的话解释一下与 Hibernate 和 JDBC 相关的对象/关系映射 (ORM) 是什么吗?
图表对理解特别有帮助...
编辑:我通过 google 为 Hibernate ORM 找到了这个,有人可以确认它是准确的,并且很好地代表了 ORM 的使用方式。
【问题讨论】:
按照您的图表,我们有一个 Person 类,它具有数据成员:登录名、姓氏、名字和地址。现在,每个 Person 对象的 Address 都是 Address 类的对象。
现在查看数据库表。我们有一个对应于 Person 类的 Person 表和一个对应于 Address 类的 Address 表。现在这两个表之间存在关系。地址表 (ID) 的主键映射到 Person 表的外键 (addr)。这样就在两个表之间建立了关系。
但是对于我们的 Person 和 Address 类,我们没有这样的关系。所以我们所做的就是将地址视为一个单独的对象,然后与 Person 类集成。所以我们实际上是在使用面向对象的方法来匹配表的关系方法。这实际上是解决此问题的一种非常糟糕的方法,因为我们在处理表中的数据和使用对象的类中的数据之间存在巨大差距。
这个问题在所谓的对象关系映射 (ORM) 中得到解决,我们匹配面向对象和关系这两个概念。 ORM 允许您使用 java 对象作为关系数据库的表示。
Hibernate 是一个 ORM 框架 - 您描述了对象在数据库中的表示方式,而 hibernate 处理转换。
【讨论】:
我在阅读 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 支持查询缓存并提供有关查询和数据库状态的统计。
来自javatpoint的信息
【讨论】:
ORM 允许您使用 java 对象作为关系数据库的表示。它映射了两个概念(面向对象和关系)
Hibernate 是一个 ORM 框架 - 您描述了对象在数据库中的表示方式,而 hibernate 处理转换。
JDBC 是用于数据库访问的 API,它以“关系方式”工作——您查询表并取回行和列。 Hibernate 在后台使用 JDBC 来获取数据,然后将其转换为对象。
一个jdbcResultSet有多条记录,每条记录有一组列。在休眠状态下,这变为 List<SomeClass> 其中 SomeClass has a field for every column in the database table, and there is one instance ofSomeClass` 每个数据库记录。
【讨论】: