【问题标题】:hibernate or oracle support for timelines?hibernate 或 oracle 对时间线的支持?
【发布时间】:2011-05-18 09:16:58
【问题描述】:

我们需要使用 Hibernate 将版本化的 Java 对象持久化到 Oracle 数据库中,这样每个版本都有一个有效的起始时间和有效截止时间的时间戳。这样我们就可以在特定时间查询对象。

Hibernate 或 Oracle 11g(或其他任何东西)是否提供任何可以简化此操作的功能?

【问题讨论】:

  • 闪回和环境都是可能的解决方案,但我不能同时接受。

标签: java oracle hibernate orm


【解决方案1】:

如果您有 Oracle 企业版,您可以为有问题的表创建一个闪回存档,然后使用纯 SQL 您可以执行 SELECT * FROM table_name AS OF timestamp

创建闪回存档后,Oracle 将在后台为您管理所有内容。

手册中有更多详细信息:

https://docs.oracle.com/en/database/oracle/oracle-database/18/adfns/flashback.html#GUID-CAC23AAE-AD5A-47FA-B446-B4DE00B2B876

【讨论】:

    【解决方案2】:

    看看Hibernate Envers

    Envers 项目旨在实现对持久类的轻松审计/版本控制。您所要做的就是使用@Audited 注释您想要审计的持久类或其某些属性。对于每个被审计的实体,将创建一个表,其中将保存对该实体所做的更改的历史记录。 然后您可以轻松检索和查询历史数据

    【讨论】:

    • 查看此文档,我可以看到您可以选择给定的修订版,但我看不到您可以使用当前日期选择哪里。
    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2016-08-12
    • 2023-03-29
    • 2020-05-08
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多