【问题标题】:Why JPA Hibernate Metamodel classes are used in Java app?为什么在 Java 应用程序中使用 JPA Hibernate 元模型类?
【发布时间】:2021-12-22 23:48:54
【问题描述】:

我正在开发一个 Java 应用程序,有几个元模型类,例如“公司_”。但是,这些都在目标文件夹中,我想知道我们为什么要使用它们,因为其他文件,例如“公司”也将在目标文件夹中构建和生成。那么,在 Java 应用中使用 JPA Hibernate Metamodel 类的目的是什么。

任何解释都将不胜感激。

【问题讨论】:

标签: java spring hibernate jpa spring-data-jpa


【解决方案1】:

那么,在 Java 应用中使用 JPA Hibernate Metamodel 类的目的是什么。

您问我们为什么需要元模型类?

它们是一个内部细节,可以实现criteria queries 的类型安全。它们是达到目的的手段。这就是标准查询的类型安全。如果可以以更简单的方式实现这一点,那么如果没有这些额外的类,那么这样做将是理想的。更少的类 -> 使用更少的 RAM -> 更少的类加载 -> 更少的启动时间。

具体来说,这是这样做的动机......

在编写条件查询或创建动态实体图时,需要引用实体类及其属性。最快和最简单的方法是提供所需的名称作为字符串。但这有几个缺点,例如编写查询时,您必须记住或查找实体属性的所有名称。但是,如果您必须重构实体并更改某些属性的名称,这也会在项目的后期阶段引起更大的问题。在这种情况下,您必须使用 IDE 的搜索功能并尝试查找引用更改的属性的所有字符串。这是一项乏味且容易出错的活动,很容易占用大部分重构时间。

您可以在此处查找更多details

如果您想深入了解为什么选择这样的实现来实现这一目标,您可以查看原始 Java Specification Request 并获取所有详细信息。

这能解决您的问题吗?在 cmets 中告诉我。

【讨论】:

  • 非常感谢您的精彩解释。其实我看过that 文章,但我需要一些关于一些问题的例子。能否请您一一说明以下问题?
  • 1. 我认为当我们使用条件查询时,可以在另一个线程使用时调用相同的变量并更改其值。出于这个原因,为了在线程安全中执行这些搜索,我们应该使用元模型类。对吗?
  • 2. 如果我们使用这个元模型类的对应类呢?例如,在项目的target文件夹中,已经生成了Company类。那么,我们为什么不使用 target 文件夹中的 Company 类并使用 Company_ 元模型类呢?
  • 还有其他我们需要使用元模型类的例子吗?请提供一些示例或场景?
  • 好的。因此,元模型类的一个目的是简化标准查询。他们没有任何其他目的和用例。我们不使用 Company 类,因为它有不同的目的和不同的实现。看看[元模型](我们应该使用元模型类)类的内部结构。它只是字符串的集合。它也与线程安全无关。
猜你喜欢
  • 1970-01-01
  • 2015-12-15
  • 2021-12-22
  • 2020-03-06
  • 2014-04-06
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多