锦通 发表于 2024-7-25 08:58:36

使用 @Audited 增强Spring Boot 应用步伐的数据审计能力

介绍

在Spring Boot开发的动态世界中,确保数据完整性和跟踪变革是至关重要的。实现这一目标的一个强盛工具是@Audited注解。本文深入探讨了该注解的复杂性、其目的、实现步骤以及如何利用其功能举行有用的实体审计。
明白@Audited

Spring Boot中的@Audited注解用于审计实体,提供对数据随时间变革的详细记录。这在需要跟踪修改、用户操作或合规要求的情况下非常有价值。
实现步骤

1. 依靠项:要包含@Audited,需要在项目中添加spring-data-envers依靠。确保你的pom.xml或build.gradle反映这一添加。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
</dependency>spring-boot-starter-data-jpa依靠包含了使用Spring Data JPA举行数据访问所需的组件。然而,假如你特别想在Spring Boot中使用@Audited注解启用实体审计,还需要包含hibernate-envers依靠。该依靠添加了对Hibernate Envers的支持,这是负责实体版本控制和审计的工具。
2. 实体设置:将@Audited注解应用于你想要审计的实体类。
import org.hibernate.envers.Audited;
@Entity
@Audited
public class YourEntity {
// 你的实体字段和方法
}3. application.yml设置:确保你的application.yml或application.properties包含Hibernate Envers所需的设置。
spring:
   data:
      jpa:
      repositories:
            enabled: true
      auditing:
            enabled: true
4. 审计表字段:Hibernate Envers生成的审计表通常包括REV(修订号)、REVTYPE(修订类型)、AUDIT_TIMESTAMP(审计时间戳)等字段。这些字段共同存储对审计实体的汗青更改。
Spring Boot会自动创建审计表(例如,‘YourEntity_AUD’)以存储元数据。
探索审计表中的字段:
– REV:修订号(递增)
– REVTYPE:修订类型(插入、更新、删除)
– AUDITEDFIELD:审计字段值
– MODIFIEDBY:举行更改的用户
– MODIFIEDDATE:修改日期和时间
5. 检索审计数据:使用Spring Data JPA堆栈查询审计汗青。
import org.springframework.data.repository.history.RevisionRepository;
import org.springframework.data.history.Revision;
import java.util.List;
public interface YourEntityAuditRepository extends RevisionRepository<YourEntity, Long, Integer> {
    List<Revision<Integer, YourEntity>> findRevisionsById(Long entityId);
}在这个例子中:
– YourEntityAuditRepository扩展了RevisionRepository,这是一个处理修订的Spring Data JPA接口。
– findRevisionsById方法允许你检索具有指定ID的实体的全部修订。
然后,你可以在服务或控制器中使用此堆栈查询审计汗青:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AuditService {
   
    private final YourEntityAuditRepository entityAuditRepository;
    @Autowired
    public AuditService(YourEntityAuditRepository entityAuditRepository) {
      this.entityAuditRepository = entityAuditRepository;
    }
    public List<Revision<Integer, YourEntity>> getEntityRevisions(Long entityId) {
      return entityAuditRepository.findRevisionsById(entityId);
    }
}另一个例子

使用Hibernate Envers查询具有给定ID的特定实体的审计汗青
List<YourEntity_AUD> revisions = auditReader.findRevisions(YourEntity.class, entityld);– auditReader:一个AuditReader实例,由Hibernate Envers提供。它允许你与实体的审计汗青举行交互。
– findRevisions:Hibernate Envers提供的方法,用于检索具有指定ID的给定实体的全部修订。
– YourEntity.class:你想要检索审计汗青的实体类。
– entityId:你想要获取修订的实体的特定ID。
– List:结果是一个审计实体(YourEntity_AUD)的列表,列表中的每个条目代表实体的一个修订。
在Hibernate Envers中,当你为一个实体启用审计时,它会生成一个带有“_AUD”后缀的相应审计实体(默认情况下)。这个审计实体会跟踪原始实体随时间变革的全部更改。
因此,这行代码本质上是在查询具有给定ID的实体的全部修订的审计汗青,并将结果存储在一个审计实体列表中。然后,可以使用此列表分析或显示实体在差别修订中的更改。
欢迎关注我的公众号:步伐猿DD。第一时间了解前沿行业消息、分享深度技能干货、获取优质学习资源

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 使用 @Audited 增强Spring Boot 应用步伐的数据审计能力