如何在用户添加,修改,删除等时将前端的审计数据显示为时间线

时间:2016-07-14 18:49:06

标签: angularjs hibernate rest java-ee spring-data

单页应用程序,它是用角度JS开发的。我只想根据用户与数据库的交互了解前端时间线中用户活动的审核。

使用HIBERNATE和带有JERSEY Restful Web服务的控制器层完成数据库层。我想在与hibernate交互时在UI中审核添加,修改,删除等用户操作。

我已经阅读了一些帖子,有人建议使用JPA API进行hibernate审计,有些人建议使用Spring DATA来实现它。我希望当用户与系统交互并将其安排在后端时,将显示审计数据。

帮助我从最好的架构感知,流程或路线图来实现它,并给我一些学习教程。

提前致谢

1 个答案:

答案 0 :(得分:0)

基于审计的假设,你的意思是能够跟踪在数据库级别对实体行进行的更改历史记录,然后是的,Hibernate有一个名为Hibernate Envers的扩展,它执行此操作你。

您可以找到有关Envers here

的文档

首要问题是,您只需要在类级别或每个属性级别使用@Audited注释您的实体,在构建EntityManagerFactorySessionFactory时提供一些配置参数org.hibernate.envers.AuditReader并确保在数据库中创建了相应的表。

修订跟踪开始后,您可以使用using (var client = new SvnClient()) { var release = SvnTarget.FromUri(new Uri(@"https://******/branches/Release")); var trunk = SvnTarget.FromUri(new Uri(@"https://******/trunk")); string trunkMergeinfo, releaseMergeinfo; client.GetProperty(release, "svn:mergeinfo", out releaseMergeinfo); client.GetProperty(trunk, "svn:mergeinfo", out trunkMergeinfo); var relInfos = releaseMergeinfo.Split("\n"); var trunkInfos = trunkMergeinfo.Split("\n"); // This is here because I don't know what will happen once I merge something into trunk. Debug.Assert(relInfos.Except(trunkInfos).Count() == 1,"Too many unknown merge paths"); var trunklist = relInfos.SingleOrDefault(i => i.StartsWith("/trunk:")); var revisions = trunklist.Replace("/trunk:", "").Split(",").SelectMany(t => { // If the log contains a range, break it out to it's specific revisions. if (t.Contains("-")) { var match = Regex.Match(t, @"(\d+)-(\d+)"); var start = int.Parse(match.Groups[1].Value); var end = int.Parse(match.Groups[2].Value); return Enumerable.Range(start, end - start + 1).ToArray(); } else return new[] { int.Parse(t) }; }).Select(x => (long)x); Collection<SvnLogEventArgs> baseRevs; // Why can't this take "trunk" or a property thereof as an argument? client.GetLog(new Uri(@"https://******/trunk"), new SvnLogArgs { Start = 1725, End = SvnRevisionType.Head }, out baseRevs); baseRevs.Reverse().Where(r => !revisions.Contains(r.Revision) ).Select(x => x.LogMessage).Dump(); } 界面轻松查询审核更改。请参阅文档以了解如何获取此信息。