文章目录
- @PrePersist 注解
- @PreUpdate 注解
- @PreRemove 注解
- @PostLoad 注解
- @PostPersist 注解
- @PostRemove 注解
- 使用案例
- 启动类
- Entity 对象
- 生命周期(Listener)
@PrePersist 注解
@PrePersist 注解用于指定在将实体对象持久化到数据库之前执行的方法。通常用于设置实体对象的初始状态或执行一些必要的操作。
标记了 @PrePersist 注解的方法会在执行 EntityManager 的 persist() 方法时触发,在持久化实体对象之前被调用。
通常用于在保存实体对象之前对对象进行一些初始化操作,比如设置默认值、生成主键等。
@PreUpdate 注解
@PreUpdate 注解用于指定在更新实体对象到数据库之前执行的方法。通常用于在更新实体对象之前进行一些额外的操作,比如更新修改时间。
标记了 @PreUpdate 注解的方法会在执行 EntityManager 的 merge() 方法时触发,在更新实体对象到数据库之前被调用。
@PreRemove 注解
@PreRemove 注解用于指定在从数据库删除实体对象之前执行的方法。通常用于在删除实体对象之前进行一些前置处理,比如执行级联删除或者删除相关的文件。
标记了 @PreRemove 注解的方法会在执行 EntityManager 的 remove() 方法时触发,在删除实体对象之前被调用。
@PostLoad 注解
@PostLoad 注解用于指定在从数据库加载实体对象完成后执行的方法。通常用于对实体对象进行一些后处理或初始化操作。
标记了 @PostLoad 注解的方法会在实体对象被加载到内存中后立即调用。
通常用于在加载实体对象后执行一些初始化操作,例如格式化数据、计算字段值等。
@PostPersist 注解
@PostPersist 注解用于指定在将实体对象持久化到数据库之后执行的方法。通常用于在保存实体对象之后执行一些后续操作,比如生成相关的日志或发送通知。
标记了 @PostPersist 注解的方法会在执行 EntityManager 的 persist() 方法之后被调用,表示实体对象已经成功持久化到数据库。
@PostRemove 注解
@PostRemove 注解用于指定在从数据库删除实体对象之后执行的方法。通常用于在删除实体对象之后执行一些清理操作,比如删除相关的缓存或记录相关的日志。
标记了 @PostRemove 注解的方法会在执行 EntityManager 的 remove() 方法之后被调用,表示实体对象已经成功从数据库中删除。
使用案例
启动类
java">@SpringBootApplication(scanBasePackages = {"com.**.listener"}
)
@EnableJpaRepositories(basePackages = "com.**.repository"
)
@EntityScan(basePackages = {"com.**.entity"}
)
// 开启通知生命周期
@EnableJpaAuditing
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}}
Entity 对象
java">@Getter
@Setter
@ToString
@Entity
@Table(name = "user")
// 指定生命周期 Listener
@EntityListeners(UserListener.class)
public class UserEntity implements Serializable {@Idprivate String id;@Column(name = "name")private String name;@Column(name = "create_time")private String createTime;@Column(name = "update_time")private String updateTime;}
生命周期(Listener)
java">@Component
public class UserListener {@PrePersistpublic void beforeCreate(UserEntity farmer) {// 创建前做的事情...}@PreRemovepublic void beforeRemove(UserEntity farmer) {// 删除前做的事情...}@PreUpdatepublic void beforeUpdate(UserEntity farmer) {// 修改前做的事情...}@PostLoadpublic void afterCreate(UserEntity farmer) {// 创建后做的事情...}@PostRemovepublic void afterRemove(UserEntity farmer) {// 删除后做的事情...}@PostUpdatepublic void afterUpdate(UserEntity farmer) {// 修改后做的事情...}}