Hibernate对象查询与映射全解析
1. 对象查询
Hibernate 提供了多种查询数据库中存储对象的方法:
- 使用标识符查询 :若已知对象的标识符,可直接用其从数据库加载对象。
- Criteria 查询 API :这是一个 Java API,用于将查询构建为对象。
- HQL 查询 :一种面向对象的查询语言,类似于 SQL,可用于检索符合查询条件的对象。
- 执行原生 SQL 查询 :当有使用 SQL 的遗留应用程序,或需要使用 HQL 和 Criteria 查询 API 不支持的 SQL 特性时,Hibernate 允许直接对数据库执行 SQL(通过“原生查询”)来检索对象。
2. 映射概述
Hibernate 的目的是让我们能将数据库视为存储 Java 对象的地方。但实际上,关系型数据库存储的是表和列中的数据,要将关系型数据库中存储的数据与 Java 对象表示的数据进行一致关联并非易事。
2.1 手动干预映射的必要性
以简单的用户类和电子邮件地址类为例,在 Java 中,用户对象包含指向电子邮件对象的字段,这种关联有方向;而在数据库中,从电子邮件行能立即确定其所属的用户行,关联方向实际上是相反的。因此,需要手动干预来确定 Java 类在数据库表中应如何表示。
2.2 映射难以自动化的原因
尝试为将 Java 对象存储在数据库中创建简单规则并非总是可行,例如简单认为一个 Java 类必须