[add] jpa auditing doc
This commit is contained in:
parent
d245b41055
commit
1382a258f6
55
docs/JPA审计.md
Normal file
55
docs/JPA审计.md
Normal file
@ -0,0 +1,55 @@
|
||||
`@EnableJpaAuditing` 是 Spring Data JPA 提供的一个注解,用于启用 JPA 审计功能。这个功能可以自动记录实体的创建和修改信息,包括创建时间和创建者,最后修改时间和最后修改者等信息。这对于跟踪记录数据变更历史非常有用,尤其是在需要审计和日志记录的业务场景中。
|
||||
|
||||
@EnableJpaAuditing 是一个Spring框架中的注解,主要用于启用JPA审计功能(Auditing)。审计功能允许你自动跟踪和管理实体对象的创建、更新等元数据信息,如记录谁在何时创建或修改了一条记录。这一特性对于日志记录、数据追踪以及安全审计等方面非常有用。下面是对@EnableJpaAuditing的详细介绍和使用方法:
|
||||
功能介绍
|
||||
- 自动填充字段:通过审计功能,你可以自动为实体类的某些字段(如创建时间createdDate、最后修改时间lastModifiedDate、创建人createdBy、最后修改人lastModifiedBy等)填充值,而无需在业务逻辑中手动设置。
|
||||
- AuditorAware 接口:Spring Data JPA 提供了AuditorAware接口,允许你自定义获取当前操作用户的逻辑。当实体类中有@CreatedBy或@LastModifiedBy注解的字段时,Spring会调用实现了AuditorAware接口的类来获取当前用户信息。
|
||||
- 注解支持:审计功能主要通过以下四个注解实现:
|
||||
> @CreatedDate:标记一个字段用于存储创建日期和时间。
|
||||
|
||||
> @LastModifiedDate:标记一个字段用于存储最后修改的日期和时间。
|
||||
|
||||
> @CreatedBy:标记一个字段用于存储创建此记录的用户。
|
||||
|
||||
> @LastModifiedBy:标记一个字段用于存储最后修改此记录的用户。
|
||||
|
||||
以下是 `@EnableJpaAuditing` 的使用步骤和介绍:
|
||||
|
||||
1. **注解配置类**:在你的 Spring Boot 应用的配置类上使用 `@EnableJpaAuditing` 注解,以启用审计功能。这通常在主配置类或者专门的 JPA 配置类上进行。
|
||||
|
||||
```java
|
||||
@Configuration
|
||||
@EnableJpaRepositories(basePackages = "com.example.repositories")
|
||||
@EntityScan(basePackages = "com.example.models")
|
||||
@EnableJpaAuditing
|
||||
public class JpaConfig {
|
||||
// 其他配置...
|
||||
}
|
||||
```
|
||||
|
||||
2. **实体类注解**:在实体类中,使用 `@CreatedDate` 和 `@CreatedBy` 等注解来标记需要自动填充的字段。
|
||||
|
||||
```java
|
||||
import org.springframework.data.annotation.CreatedBy;
|
||||
import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
|
||||
@EntityListeners(AuditingEntityListener.class)
|
||||
public class AuditableEntity {
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
@CreatedDate
|
||||
private Instant createdDate;
|
||||
|
||||
@CreatedBy
|
||||
private String createdBy;
|
||||
|
||||
// 其他字段...
|
||||
}
|
||||
```
|
||||
3. **审计触发**:当实体被插入(`insert`)或更新(`update`)时,Spring Data JPA 会自动触发审计逻辑,根据 `AuditorAware` 提供的信息填充 `@CreatedDate`、`@CreatedBy`、`@LastModifiedDate` 和 `@LastModifiedBy` 注解的字段。
|
||||
|
||||
4. **注意事项**:使用 `@EnableJpaAuditing` 时,需要注意以下几点:
|
||||
- 确保你的实体类使用了 `@EntityListeners(AuditingEntityListener.class)` 注解。
|
||||
- 审计功能依赖于实体的生命周期事件,因此它不会在通过 JDBC 直接操作数据库时触发。
|
Loading…
Reference in New Issue
Block a user