作为 S2JH: 基于SSH的企业Web应用开发框架 提供相关技术点介绍系列,一方面算是给出自己对某一个特定问题的设计实现思路分享供有兴趣朋友参考,另一方面也算是与大家一起探讨汲取各位同行更多更好的设计。更多框架相关技术文档可直接访问: https://github.com/xautlx/s2jh/wiki/Index
-------------------------------------------正文部分--------------------------------------------
概要说明
借助Hibernate Envers组件,实现对数据变更进行自动的审计记录,并增强扩展设计实现通用的历史版本数据列表和对比查看UI功能。
基本原理:就是为每个Audited的对象数据表创建一个对应AUD结尾的审计数据存储表,然后借助Hibernate Listener机制把对数据的增删改操作涉及的快照数据记录搬迁到AUD审计数据表。 因此审计数据表根据业务操作的频率可能增长会很快,可以考虑一些分库分区等优化措施来减少对业务数据存取效率的影响,启用此功能之前建议仔细阅读官方文档说明及考虑一定的调优措施。 Hibernate Envers
框架扩展
一般来说,Hibernate Envers记录的这些审计数据,主要用在以外丢失数据找回、审查数据合法性、辅助问题分析等用途,一般直接数据库SQL查询分析即可。
考虑到使用的便捷性,开发框架扩展提供了一个通用的UI功能,展示数据变更记录列表和不同版本对比查看视图。 框架提供的是一个通用的实现,因此可能存在一些不合理的地方,如对比视图可能会把一些用户不应该看到的、不应该显示的数据都呈现,因此在实际业务是否提供此UI视图可酌情考虑,或参考通用实现的基础上进行定制化处理。
- 版本列表视图:
- 版本对比视图:
关于列表界面“操作类型”,“原状态”,“新状态”,“操作说明”几个属性的处理
上述截图由于数据操作逻辑很简单,就是简单的修改,因此这几个属性都为空。实际审计的业务操作一般上述几个属性的处理,以某某审批操作为例:
操作类型: 用于标识业务操作动作,如“提交”审批,“审核”提交等操作,一般对应于Web Controller层面某个方法的的调用;
原状态,新状态: 一般业务操作都涉及到数据对象的状态变更,如“提交”操作涉及从“草稿”迁移到“待审”状态,“审核”操作涉及到从“待审”迁移到“审核通过”或“审核未过”状态变化等;
操作说明: 用于补充记录操作的原因、过程、结果等说明,如审核不过的原因等;
相关推荐
Envers 是 Hibernate 的一个扩展模块,专门用于数据库记录的审计和历史版本管理。它允许开发者跟踪和记录数据库实体的变化,为用户提供了一种便捷的方式来查看和恢复过去的版本。本篇文章将深入探讨 Envers 的核心...
Hibernate Envers 是一个强大的审计框架,它与 Hibernate ORM 框架紧密集成,用于记录数据库实体的历史版本。Envers 的主要目标是为应用程序提供数据变更的跟踪,以便于数据恢复、合规性检查以及问题分析。 Envers ...
总之,结合JPA和Hibernate Envers,我们可以轻松地实现在Java应用程序中对数据CRUD操作的历史审计日志功能。这不仅有助于追踪数据变化,还能提高系统的透明度和可追溯性,对于企业级应用来说是非常有价值的。在实际...
`spring.jpa.properties.org.hibernate.envers.audit_strategy`设置了审计策略,这里使用了`ValidityAuditStrategy`,它基于时间戳来存储版本信息。`spring.jpa.properties.org.hibernate.envers.audit_strategy_...
而Hibernate Envers 是 Hibernate 的一个扩展,专注于数据审计和版本控制。这个参考资料将帮助我们深入理解Hibernate Envers的功能、配置以及如何在实际项目中应用。 ### 1. Hibernate Envers 的概念 Hibernate ...
**Envers** 是 **Hibernate** 的一个扩展模块,主要用于实现实体数据的历史版本控制。它的工作原理类似于版本控制系统(如Subversion或Git),通过在数据库中创建额外的审计表来记录每一次数据变更。 #### 二、基本...
2. **审计监听器**:在`persistence.xml`中配置Envers的监听器,如`<property name="org.hibernate.envers.audit_table_suffix" value="_AUD"/>`,设置审计表的后缀。 3. **查询历史数据**:使用`AuditReader`来...
在Spring Boot应用中,这可以通过拦截器、AOP(面向切面编程)或特定的审计库(如Spring Data Audit或Hibernate Envers)来实现。这些机制可以帮助记录谁何时对数据进行了哪些修改,增强了系统的透明度和可追溯性。 ...