我需要审计我的一些数据库表上的所有更改。例如,对于给定的员工,我需要知道所有地址以及该字段被修改的日期。其实我使用Spring Data,Hibernate和JPA。一个好的选择是使用休眠Envers,但问题是我无法使用Spring Data获取历史记录。另一种选择是创建一个Employee_history表,但我没有办法从两个不同的表中获取Employee记录(我想在Employee表中插入,但从Employee和Employee_history中获取数据)。有没有其他方法可以实现这一点?审计数据库记录随着Spring数据的变化
回答
您必须回答的第一个问题应该是您需要的审核级别。是一个简单的更改列表足够了吗?字符串表示是否足够好?或者你是否希望能够支持你的实体的修订,在那里你可以返回并获取修订版X的数据“没有任何麻烦”?
如果更改的列表足够了,并且您仍然使用休眠模式,那么我会选择HibernateEventListener
(而不是JPA),因为您已经获得了postevents中的所有更改。无需自己创建三角洲。
另一方面,Envers很容易集成和配置。使用@Audited注释您的实体足以满足“完整”版本支持。我相信你不能直接使用Spring Data来查询修订实体,因为你总是可以编写你的AuditReaderRepository
bean并直接使用hibernate审计查询接口。在这种情况下摆弄两个版本之间的更改列表将留给您,这基本上意味着获取修订版本并确定它们之间的增量。在这种情况下,Envers的主要优势在于用户表示仍然是用户类,而不仅仅是一个字符串(创建者fe)
它取决于您希望支持哪种级别的审计,我会用最小的所需实现。关于在www中选择什么样的审计策略,有一些很好的博客。
使用Spring数据Envers :)
“这个项目是Spring数据JPA项目,以允许访问由Hibernate Envers管理实体版本的延伸。”
请参阅Spring Data Envers路线图https://github.com/spring-projects/spring-data-envers/issues/33 – 2015-06-04 14:50:56
FYI Envers内置于Spring数据截至发行列车跳跃者https: //spring.io/blog/2016/02/12/spring-data-release-train-hopper-m1-released – 2016-03-10 06:38:04
- 1. Spring AOP - 数据库审计
- 2. 随着数据库
- 3. 审计与Spring数据JPA
- 4. 用于审计日志记录的数据库设计
- 5. 审计SQL Server数据变化
- 6. 数据库中多个表的审计历史记录
- 7. 审计数据库回滚
- 8. 数据库设计审查
- 9. 如何将审计线索记录到数据库?
- 10. 数据库中的记录计数
- 11. Spring数据审计和@Embedded JPA
- 12. 休眠Envers如何记录额外的审计数据如表名被审计
- 13. 格式化Access数据库的记录
- 14. 数据库中的计数记录和计数器变量之间的差异
- 15. 数据库设计 - 记录交易
- 16. 数据库设计交钥匙记录
- 17. 我是否需要手动记录数据以记录核心数据中随时间的变化?
- 18. Oracle数据库审计跟踪
- 19. 如何调用数据库记录以及数据库记录
- 20. 用于记录实验数据的数据库设计
- 21. 数据库设计/结构 - 随着时间的推移收集数据
- 22. 正在提取数据库记录随着PDO的准备语句
- 23. 数据库记录有关n-m关系变化的信息
- 24. 您可以配置SQL Server 2008审计以将审计数据保留在正在审计的数据库之外的数据库上吗?
- 25. 在数据库表上记录数据
- 26. ELMAH - 在数据库中记录SQL审查elmah.axd
- 27. 随着Python 3.5新数据的变化,最大值发生变化
- 28. JPA审计/历史数据与现有数据库触发器
- 29. 根据时间随机选择从数据库中记录
- 30. 企业数据审计
我的应用支持数据每天都会刷新,但另一部分需要知道实体某些字段中发生的所有更改。然后,我必须向他们展示,以便能够使用我的实体并接收Employees的实例,而不是字符串。这就是为什么Envers对我来说真的很棒,但我在配置时遇到问题。 – 2013-05-01 12:41:27
配置有什么问题?我所要做的就是将envers jar添加到战争中,并在我想要审计的类上添加@audited注释。我遇到的唯一的小问题是entityrelations没有被审计的实体,但是我只是在关系定义上添加了另一个注释来不审计这些(@auditmode?不确定atm)。 envers正在为我工作。我使用最新的休眠4.2 – 2013-05-02 05:00:52