【发布时间】:2010-12-13 00:32:04
【问题描述】:
关于我如何最好为基于 Java 的 Web 应用程序实现文章修订历史并将其保存在 AuditLog 中的任何想法
StackOverflow 已经有这样一个功能,可以让人们看到一个版本与另一个版本之间的差异,就像 SVN 客户端一样。
这更像是一个设计问题而不是实现问题。
补充:如何在网页上显示这些更改?
补充:建议的解决方案
Article
--------------------------------
Integer id
String title
String body
List<Tag> tags
AppUser createdBy
Date createdDate
AuditLog
--------------------------------
Integer id
Integer objectId
Operation operation // enum with UPDATE and DELETE. I won't audit an insert
Date createdDate
AppUser createdBy
String class
String revisionXML
String comment
HibernateInterceptor 将拦截 保存过程并使用Castor XML创建旧对象的XML字符串。
class 和 id 用于获取特定对象的修订版本。
google-diff-match-patch 将用于创建 HTML diff 文件
【问题讨论】:
-
从答案中,我将使用 DaisyDiff。 SVNKit 用于 SVN 服务器中的数据。从 JackRabbit 的 API 中,我没有看到任何获取文档/节点差异的接口。
-
发现了一个类似的问题:stackoverflow.com/questions/923398/…
-
对于那些稍后阅读本文的人。我刚刚发现了 Hibernate Envers(docs.jboss.org/envers/docs/index.html),hibernate 会处理你的实体版本,你可以使用 google-diff-match 来生成实际的差异。
标签: java revision database-versioning