[英]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。 如果它是一个自定义的内部系统,那么做任何一个都没有什么意义。
我刚才想到的一个想法,我觉得可能行得通的是:
使用现有的数据库实现,如 H2,并使用 JPA 集成。 H2 已经有一个 JPA 集成库,所以应该很容易。
在此数据库中,创建一个 Java 存储过程或函数,并通过 JPA 从您当前的应用程序中调用它。 有关如何创建 Java 存储过程或函数的信息,请参阅此 H2 文档。 (您可能还想探索“将函数用作表”一节。)
为服务方法定义协议并将其封装在模型类中。 此模型类的实例可以传递给函数/SP 并检索响应。
警告:我自己从未这样做过,但我认为它会起作用。
编辑:这是一个代表思想的图表。 尽管图中单独显示了 H2,但它很可能与“您的 Java/JEE 应用程序”位于同一 JVM 中。 但是,由于没有必要使用 H2,因此我将其显示为单独的实体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.