关于如何最佳的任何想法我可以为基于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
Hibernate Interceptor将拦截 保存过程并使用Castor XML创建旧对象的XML字符串。
class和id用于获取特定对象的修订版。
google-diff-match-patch将用于创建HTML差异文件
答案 0 :(得分:3)
最佳解决方案是使用已支持版本的数据库或存储,例如Apache Jackrabbit。
如果这不是一个选项,那么您必须决定要存储文章的位置。在文件系统上?然后将每篇文章作为目录并将修订版本保存为数字(00001,00002等),并将最后修订版本的编号放在特殊文件中(如current
)。然后,您可以快速找到有多少版本(只需查看current
)并前进和后退。
如果使用数据库,则在文章表中添加版本号字段,并添加第二个表或标记,说明当前版本是哪一个。您也可以使用max(version)
进行选择,但这些SQL结构往往非常丑陋且令人困惑。将这些信息保存在其他地方要简单得多。
[编辑]要生成差异,请查看此项目:google-diff-match-patch
答案 1 :(得分:1)
我会使用现有的VCS(例如,SVN)。在那里你有修订历史记录 - 剩下要做的就是从你的应用程序到VCS的界面。