【问题标题】:JPA id generation generic strategyJPA id 生成通用策略
【发布时间】:2012-11-28 09:56:19
【问题描述】:

我有一个应用程序可以正确使用 JPA-Hibernate 和 MySQL。在这种情况下,我在实体中使用自动策略来生成 id。 另一方面,我有其他使用 Oracle 的应用程序,我为此使用了序列策略。 关键是我想知道是否可以对 Oracle/MySQL/Sql Server 使用“通用”策略,并使我的应用程序更便携。

谢谢。

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    拥有便携式解决方案的简单方法是使用TableGenerator。值在数据库表中进行管理,并通过 SQL 查询进行检索和增量,因此不使用数据库供应商特定的构造。

    【讨论】:

      【解决方案2】:

      不依赖特定数据库功能的通用策略需要额外的表来生成 ID。此类策略:hiloenhanced-table。您还可以使用基于 UUID 生成的策略,例如 uuid.hexuuiduuid2。其他策略将使用不同的特定于 DB 的功能,因此可能在行为上有所不同。例如,native 对于 MySQL 和 Postgres 的工作方式不同,在 MySQL(生成器)中,您可以在保存对象时正确插入,在 Postgres(序列)中,您只能在常规刷新时插入。您可能想查看DefaultIdentifierGeneratorFactory 的来源,了解所有可能的策略并探索他们的算法和文档。

      请注意,让 2 个或更多异构应用程序使用同一个数据库通常是个坏主意,尤其是当它们都在写入数据库时​​。您的数据库将很难维护和重构。

      【讨论】:

      • 我不认为这是为了让两个应用程序使用同一个数据库。据我了解 OP 的问题,他想要便携性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 2012-04-19
      • 1970-01-01
      • 2016-03-23
      • 2012-06-09
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多