【问题标题】:Is it possible to assign multiple ORM configurations to a Java Model?是否可以将多个 ORM 配置分配给 Java 模型?
【发布时间】:2019-10-01 07:58:58
【问题描述】:

我们有这种情况: 一个用 Spring 编写的后端。 一款原生 Android 应用。

他们共享许多模型。

它所做的是在后端的包中编写模型,然后将其导出为 android 中的 jar。

在 android 上,我们使用 OrmLite 与 DB 上的这些模型进行交互。模型有适当的注释来实现这一点。在后端,我们基本上为每个模型编写原始的 crud 查询,这变得很疯狂,因为每次我们添加一个字段时,我们都需要更新所有相关的查询。

我们想要实现的是在服务器上使用另一个 orm。问题是旧的错误设计选择的服务器和平板电脑具有不同的列和表名,即使模型相同。无法重命名列和表,因为它涉及的工作量太大。

我们需要让事情变得更智能,但我们也希望避免复制模型只是为了将模型重新映射到不同的数据库架构。

您对如何实现这一目标有任何想法吗?

【问题讨论】:

    标签: java android orm ormlite


    【解决方案1】:

    不幸的是,“无法重命名列和表,因为它涉及太多工作”是长期保持一致且可管理的代码库的最佳解决方案。

    就短期而言,明智的做法是在服务器上使用基于 XML 的配置并坚持为平板电脑应用添加注释。

    更新

    你想看看JPA规范,它定义了java中的持久化机制。它有多个实现提供者,here 是最新版本规范的提供者列表。

    我只有 Hibernate ORM 的经验,它连同它的原生 API 也提供了 JPA 的实现。除了注释之外,它还具有基于 XML 的配置选项。您将评估哪个提供商适合您的要求。

    如果 ORMlite 的注解与 JPA 不同,那么你甚至可以在实体类中使用 JPA 注解,而不是 ORMLite 的注解。但请注意,这会使您的实体模型类变得混乱,并且您将需要在实体模型的类路径上同时使用您选择的 JPA 实现库和 ORMLite 库。

    【讨论】:

    • 我知道,但我们已经评估过了,由于各种原因,它不可行。其中之一是平板电脑保留了服务器 Pks 的引用,但也有自己的 pks,因为它可以自己创建实体。但是服务器不存储设备 pks,因为它不需要它们。所以我们应该将所有东西都迁移到 UUID 上,但这很痛苦,因为它涉及后端和应用程序端的大部分代码库。那么,当您说基于 XML 的配置时,您是否想到了特定的 ORM?
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多