`
xautlx
  • 浏览: 12957 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

基于Hibernate Envers实现数据审计Audit操作记录

阅读更多

作为 S2JH: 基于SSH的企业Web应用开发框架 提供相关技术点介绍系列,一方面算是给出自己对某一个特定问题的设计实现思路分享供有兴趣朋友参考,另一方面也算是与大家一起探讨汲取各位同行更多更好的设计。更多框架相关技术文档可直接访问: https://github.com/xautlx/s2jh/wiki/Index

-------------------------------------------正文部分--------------------------------------------

概要说明

借助Hibernate Envers组件,实现对数据变更进行自动的审计记录,并增强扩展设计实现通用的历史版本数据列表和对比查看UI功能。

基本原理:就是为每个Audited的对象数据表创建一个对应AUD结尾的审计数据存储表,然后借助Hibernate Listener机制把对数据的增删改操作涉及的快照数据记录搬迁到AUD审计数据表。 因此审计数据表根据业务操作的频率可能增长会很快,可以考虑一些分库分区等优化措施来减少对业务数据存取效率的影响,启用此功能之前建议仔细阅读官方文档说明及考虑一定的调优措施。 linkHibernate Envers

框架扩展

一般来说,Hibernate Envers记录的这些审计数据,主要用在以外丢失数据找回、审查数据合法性、辅助问题分析等用途,一般直接数据库SQL查询分析即可。

考虑到使用的便捷性,开发框架扩展提供了一个通用的UI功能,展示数据变更记录列表和不同版本对比查看视图。 框架提供的是一个通用的实现,因此可能存在一些不合理的地方,如对比视图可能会把一些用户不应该看到的、不应该显示的数据都呈现,因此在实际业务是否提供此UI视图可酌情考虑,或参考通用实现的基础上进行定制化处理。

  • 版本列表视图:

audit-list

  • 版本对比视图:

audit-compare

关于列表界面“操作类型”,“原状态”,“新状态”,“操作说明”几个属性的处理

上述截图由于数据操作逻辑很简单,就是简单的修改,因此这几个属性都为空。实际审计的业务操作一般上述几个属性的处理,以某某审批操作为例:

操作类型: 用于标识业务操作动作,如“提交”审批,“审核”提交等操作,一般对应于Web Controller层面某个方法的的调用;

原状态,新状态: 一般业务操作都涉及到数据对象的状态变更,如“提交”操作涉及从“草稿”迁移到“待审”状态,“审核”操作涉及到从“待审”迁移到“审核通过”或“审核未过”状态变化等;

操作说明: 用于补充记录操作的原因、过程、结果等说明,如审核不过的原因等;

在线更新版本参考:https://github.com/xautlx/s2jh/wiki/DataAudit

1
0
分享到:
评论

相关推荐

    hibernate_reference-Hibernate Envers User Guide

    通过以上内容,我们可以看到Hibernate Envers为开发者提供了一套完整的解决方案,用于实现实体的审计追踪功能。无论是初学者还是有经验的开发人员,都能够从中获益,提高应用程序的安全性和可维护性。

    envers hibernate

    Envers 是 Hibernate 的一个扩展模块,专门用于数据库记录的审计和历史版本管理。它允许开发者跟踪和记录数据库实体的变化,为用户提供了一种便捷的方式来查看和恢复过去的版本。本篇文章将深入探讨 Envers 的核心...

    Hibernate Envers.docx

    Hibernate Envers 是一个强大的审计框架,它与 Hibernate ORM 框架紧密集成,用于记录数据库实体的历史版本。Envers 的主要目标是为应用程序提供数据变更的跟踪,以便于数据恢复、合规性检查以及问题分析。 Envers ...

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    接着,为了实现审计日志,我们需要在项目中引入Hibernate Envers的依赖。在Maven的pom.xml文件中,可以添加如下依赖: ```xml <groupId>org.hibernate <artifactId>hibernate-envers <version>5.x.y.Final...

    Springboot hibernate envers使用过程详解

    `hibernate-envers`依赖是Envers的核心,用于实现审计功能。同时,还引入了`h2`数据库作为测试环境,因为它轻量级且易于配置。 接下来,我们需要创建一个被审计的实体类。在例子中,`User`类是被审计的对象,使用了...

    hibernate3参考资料

    Hibernate Envers 自带了一个监听器,它会在实体发生变化时自动触发审计操作。在Hibernate配置中,通过`<listener type="audit" class="org.hibernate.envers.event.AuditEventListener" />`来注册该监听器。 ### 5...

    hibernate-envers-4.2.4.Final.jar

    hibernate-envers-4.2.4.Final.jar

    spring4.2+hibernate5环境开发全部jar包

    Spring是一个全面的后端应用程序框架,提供了依赖注入、AOP(面向切面编程)、数据访问、事务管理等多种功能,而Hibernate则是一个强大的对象关系映射(ORM)工具,简化了数据库操作。下面将详细解释这两个框架以及...

    envers中文文档(部分)

    **Envers** 是 **Hibernate** 的一个扩展模块,主要用于实现实体数据的历史版本控制。它的工作原理类似于版本控制系统(如Subversion或Git),通过在数据库中创建额外的审计表来记录每一次数据变更。 #### 二、基本...

    hibernate-envers-demo:使用Hibernate Envers,Spring Boot和AngularJS的简短演示

    使用的技术选择Spring-boot( )建立一个基于后端REST体系结构和使用AngularJS( )的前端实现的快速工作模型。会消耗这些服务。 Hibernate envers( )将用于审核对数据库行的所有更改,并查询特定时间点的更改。 ...

    hibernate-envers:有机会使用 Envers 对 eXo 的 wiki 实体进行版本控制

    Envers是Hibernate的一个扩展,专门用于数据审计和历史版本记录。 **描述分析:** 描述中提到的“Hibernate环境”意味着讨论将在Java的持久化框架Hibernate的上下文中展开。而“有机会使用 Envers 对 eXo 的 wiki ...

    hibernate-4.2.3.required

    10. **插件扩展**:丰富的插件生态系统,如Hibernate Search提供了全文搜索功能,Hibernate Envers提供了审计追踪服务。 压缩包子文件的文件名称列表虽然没有具体给出,但通常会包含以下核心组件: - hibernate-...

    hibernate-release-5.2.10.Final

    Hibernate Envers是Hibernate自带的一个强大的审计功能模块,它能自动记录数据库表的变更历史,为数据的追踪和回溯提供了便利。在5.2.10.Final版本中,Envers可能进行了性能和功能的优化,使得审计日志的生成和查询...

    hibernate5所需要的jar包

    以上这些jar包共同构成了Hibernate 5的运行环境,确保了你在开发基于Hibernate的Java应用程序时能够正确地执行数据库操作,同时享受到ORM带来的便利性。在实际项目中,还需要结合Spring框架或其他应用服务器的配置,...

    hibernate-tutorials_java_hibernate_Eclipse_fallenweg_

    通过Envers,开发者可以轻松实现数据的版本控制和历史查询,这对于审计或回溯操作十分有用。 8. **注解(Annotations)** 注解是Java中的一种元编程机制,Hibernate利用注解来声明实体类和它们的属性,以及关联...

    hibernate包

    2. **envers**: Envers是Hibernate的一个扩展,提供了对实体数据的历史记录和审计功能。通过`hibernate-envers.jar`,开发者可以轻松地跟踪和审计数据库中的更改,无需额外编写代码。 3. **jpa**: 这个目录可能包含...

    hibernate jar包

    4. **Hibernate Envers**:提供审计功能,记录实体的变化历史,方便追溯和审计数据修改。 5. **Hibernate Tools**:包括Hibernate反向工程工具,可以自动生成Java实体类和数据库脚本,还有Eclipse或IntelliJ IDEA等...

    Beginning Hibernate: For Hibernate 5

    - **版本控制**: 使用 Hibernate Envers 来实现对数据版本的追踪。 #### 目标读者 - **Java 开发者**: 本书面向有一定 Java 和数据库经验但对 Hibernate 不熟悉的开发者。 - **对象关系映射**: 适用于希望学习如何...

Global site tag (gtag.js) - Google Analytics