添加Spring的实体回调监听器:

Self-hosted database solution offering control and scalability.
Post Reply
babyrazia113
Posts: 162
Joined: Sat Dec 21, 2024 9:30 am

添加Spring的实体回调监听器:

Post by babyrazia113 »

的详细信息,包括:

谁做了改变
变更发生的时间
做了哪些改变
Spring Data JPA 中审计的重要注意事项如下:

@CreatedDate:捕捉实体诞生的时刻。
@LastModifiedDate:记录实体最近一次更新的时间。
@CreatedBy:记录实体的创建者。
@LastModifiedBy:跟踪对实体进行最近更改的人员。
1.启用 JPA 审计:
设置带有注释的 Spring Data JPA 应用程序以激活审计功能。将@EnableJpaAuditing合并到主类中是此过程的一部分。

启用 JPA 审计

Spring Data JPA 使用@EntityListeners指定回调监听器。Spring 提供的 ` AuditingEntityListener`用于在实体生命周期事件期间捕获审计信息:

添加spring的实体回调监听器

3. 跟踪创建和上次修改日期:
您可以通过向实体字段添加 ` @CreatedDate`和 ` @LastModifiedDate`注释来跟踪创建和修改时间戳。Spring Data JPA 会自动更新这些字段。

跟踪创建和最后修改日期

4. Spring Security 变更的作者:
如果应用程序使用 Spring Security,它可以通工程师数据库过使用 ` @CreatedBy`和 ` @LastModifiedBy`来跟踪谁更改了数据。实现 ` AuditorAware<T> ` 接口来提供当前用户信息:

Spring Security 变更的作者

该信息来自 SecurityContext 的 Authentication 实例。要更改分配给注释字段的值,我们可以利用` AuditorAware ` 接口。

审计意识

三、Hibernate Envers 简介
Hibernate Envers 是对象关系映射 (ORM) 工具 Hibernate 的一个模块,它为审计提供了强大的解决方案。Envers 会自动跟踪实体的更改,并将修订历史记录存储在单独的表中。这样可以轻松查询历史数据并了解其演变情况。

1.设置Hibernate Envers:
要设置 Envers,请将 ` hibernate-envers ` JAR 添加到类路径中:

设置休眠环境

然后在 ` @Entity`上(审核整个实体)或特定的 ` @Column`上(如果我们只需要审核特定属性)添加 ` @Audited`注释。

设置休眠环境 2

2.创建审计日志表:
将 ` hibernate.hbm2ddl.auto ` 设置为 create、create-drop 或 update,然后 Envers 可以自动创建它们。考虑在业务项目中使用数据库中的自动创建表。

创建审计日志表

3.配置Envers:
以与设置任何其他 Hibernate 属性相同的方式设置 Envers 属性。
Post Reply