【发布时间】:2011-05-18 09:16:58
【问题描述】:
我们需要使用 Hibernate 将版本化的 Java 对象持久化到 Oracle 数据库中,这样每个版本都有一个有效的起始时间和有效截止时间的时间戳。这样我们就可以在特定时间查询对象。
Hibernate 或 Oracle 11g(或其他任何东西)是否提供任何可以简化此操作的功能?
【问题讨论】:
-
闪回和环境都是可能的解决方案,但我不能同时接受。
我们需要使用 Hibernate 将版本化的 Java 对象持久化到 Oracle 数据库中,这样每个版本都有一个有效的起始时间和有效截止时间的时间戳。这样我们就可以在特定时间查询对象。
Hibernate 或 Oracle 11g(或其他任何东西)是否提供任何可以简化此操作的功能?
【问题讨论】:
如果您有 Oracle 企业版,您可以为有问题的表创建一个闪回存档,然后使用纯 SQL 您可以执行 SELECT * FROM table_name AS OF timestamp
创建闪回存档后,Oracle 将在后台为您管理所有内容。
手册中有更多详细信息:
【讨论】:
Envers 项目旨在实现对持久类的轻松审计/版本控制。您所要做的就是使用@Audited 注释您想要审计的持久类或其某些属性。对于每个被审计的实体,将创建一个表,其中将保存对该实体所做的更改的历史记录。 然后您可以轻松检索和查询历史数据。
【讨论】: