我们需要使用Hibernate将版本化的Java对象持久化到Oracle数据库中,以便每个版本都有一个有效的from和valid-until时间戳。这样我们就可以在特定时间查询对象。
Hibernate或Oracle 11g(或其他任何东西)是否提供了可以简化此操作的任何内容?
答案 0 :(得分:3)
如果您有Oracle Enteprise Edition,您可以为相关的表创建闪回存档,然后使用纯SQL,您可以执行SELECT * FROM table_name AS OF timestamp
一旦创建了闪回存档,Oracle将在后台管理所有内容。
手册中有更多详细信息:
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_flashback.htm#ADFNS01011
答案 1 :(得分:2)
Envers项目旨在实现对持久性类的轻松审核/ 版本控制。您需要做的就是使用@Audited注释要审核的持久类或其某些属性。对于每个经审计的实体,将创建一个表,该表将保存对实体所做更改的历史记录。 您可以毫不费力地检索和查询历史数据。