【问题标题】:How to map custom data structures to bean entities with JPA/Hibernate?如何使用 JPA/Hibernate 将自定义数据结构映射到 bean 实体?
【发布时间】:2020-01-18 13:07:16
【问题描述】:

我们有一个(可能很大)用 Java (8+) 实现的自定义数据结构。它有一个用于查询数据的简单且最佳的 API。逻辑结构与 RDMS 大致相似(它具有例如关系、列、主键和外键),但没有 SQL 驱动程序。

主要目标是通过 ORM 访问数据(将逻辑实体映射到 JPA 注释的 bean)。如果我们可以使用 JPQL,那就太好了。首选 Hibernate,但也欢迎使用其他替代方案。

实现这一目标的最简单方法是什么?这种实现的关键部分是哪些?

(P.S.直接实现SessionImplementorEntityManagerImplementor等好像太复杂了。)

【问题讨论】:

  • 如果已经有API可以查询,那么使用ORM查询的动机是什么?
  • @SreeKumar 使其可访问 JPA。它可能是现有 JPA 框架和应用程序的替代驱动程序。

标签: java hibernate jpa data-structures


【解决方案1】:

你有两种可能。

为您的系统实现一个 JDBC 兼容的驱动程序,这样您就可以“直接”使用 Hibernate 等 JPA 实现(尽管您可能需要为您的系统创建一个自定义方言)。

ObjectDB 那样直接针对 JPA 规范进行编程,这完全绕过了通过 SQL 和 JPA 实现的需要。

后一种可能更容易,但您仍然需要实现完整的 JPA API。如果它是一个仅限内部定制的系统,那么做任何一个都没有什么意义。

【讨论】:

    【解决方案2】:

    我刚才想到的一个想法,我觉得可能可行:

    1. 使用现有的数据库实现,如 H2,并使用 JPA 集成。 H2 已经有一个 JPA 集成库,所以应该很简单。

    2. 在此数据库中,创建一个 Java 存储过程或函数,并通过 JPA 从您当前的应用程序中调用它。请参阅this H2 documentation,了解如何创建 Java 存储过程或函数。 (您可能还想探索“将函数用作表格”部分。)

    3. 为服务方法定义协议并将其封装在模型类中。这个模型类的一个实例可能会被传递给函数/SP并检索响应。

    警告:我自己从未这样做过,但我认为它会起作用。


    编辑:这是一个代表思想的图表。尽管该图单独显示了 H2,但它很可能与“您的 Java/JEE 应用程序”位于同一个 JVM 中。但是,由于不需要使用 H2,因此我将其显示为单独的实体。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多