繁体   English   中英

如何使用 JPA/Hibernate 将自定义数据结构映射到 bean 实体?

[英]How to map custom data structures to bean entities with JPA/Hibernate?

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

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

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

(PS 直接实现SessionImplementor , EntityManagerImplementor等好像太复杂了。)

你有两种可能性。

为您的系统实现符合 JDBC 的驱动程序,以便您可以“直接”使用 JPA 实现,例如 Hibernate(尽管您可能需要为您的系统创建自定义方言)。

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

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

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

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

  2. 在此数据库中,创建一个 Java 存储过程或函数,并通过 JPA 从您当前的应用程序中调用它。 有关如何创建 Java 存储过程或函数的信息,请参阅此 H2 文档 (您可能还想探索“将函数用作表”一节。)

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

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


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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM