元模型本身在 [JPA 2 规范] 的第 5 章 元模型 API 中进行了描述。[JPA 2 规范] 的第 6 章 标准 API 描述并演示了在标准查询中使用元模型,第 9 章标准查询 也是如此。
元模型是一组描述领域模型的对象。javax.persistence.metamodel.Metamodel
充当这些元模型对象存储库,并提供对它们的访问,并且可以通过 getMetamodel
方法从 javax.persistence.EntityManagerFactory
或 javax.persistence.EntityManager
获得。
此元模型在两个方面很重要。首先,它允许供应商和框架以通用方式处理应用程序的领域模型。持久性供应商已经具有一些元模型形式,用于描述正在映射的领域模型。然而,此 API 定义了对现有信息的单一、独立访问。例如,验证框架可以使用这些信息来理解关联;编组框架可能会使用这些信息来决定编组多少实体图形。此用法超出了本文档的范围。
截至今天,JPA 2 元模型不提供任何用于访问与物理模型相关的关系信息的功能。预计将在规范的未来版本中解决此问题。
其次,从应用程序作者的角度来看,它允许非常流畅地表达完全类型安全的条件查询,特别是静态元模型方法。[JPA 2 规范] 定义了访问和使用元模型的多种方式,包括我们将稍后研究的静态元模型方法。静态元模型方法 在代码对域模型具有先验知识时非常有用。在 第 9 章,标准查询 中其示例中专门使用了这种方法。
静态元模型 表示一系列“反映”域模型中实体和嵌入式的类,并提供对镜像类属性的元数据静态访问。我们专门讨论 [JPA 2 规范] 中称为规范元模型 的内容。
应根据需要 javax.persistence.metamodel 所需类型(例如 | ||
-- [JPA 2 规范,第 6.2.1.1 节,第 198-199 页] |
如果您愿意,可以手动生成这些规范元模型类,但预计大多数开发人员会更喜欢使用注释处理器。注释处理器本身超出了本文档的范围。但是,Hibernate 团队确实开发了一个注释处理器工具,用于生成规范元模型。请参阅Hibernate 元模型生成器。
在构建 Hibernate EntityManagerFactory
时,它将为每个已知的受管类型化的元模型类查找规范元模型类,如果发现任何元模型类,它将把适当的元模型信息注入到其中,如 [JPA 2 规范,第 6.2.2 节,第 200 页] 中所述
版权所有 © 2005 Red Hat Inc. 和不同的作者