gpt4 book ai didi

java - 删除时执行 JPA 管理实体的清理方法

转载 作者:行者123 更新时间:2023-12-01 19:41:30 24 4
gpt4 key购买 nike

我有一个由 JPA 管理的 POJO,它在 @PostConstruct 带注释的方法内创建外部资源(通过 HTTP 消息)。当像这样删除该实体时,我希望调用 cleanUp 方法。我认为这可能可以通过 JPA 提供的注释来完成,但我的搜索没有发现任何结果。下面是一个示例实体。

@Entity
public class ExampleEntity {

// Constructors and Fields

@JpaAnnotation
public void cleanUp() {
// Performs clean up
}

// Methods

}

显示我如何使用 cleanUp 方法的附加示例。

@Entity
@Component
public class ExampleEntity {

// Id and managed columns
private String externalResourceId;

@Transient
private static CustomHttpService service;

// Constructors

@Autowired
public void setCustomHttpService(CustomHttpService service) {
ExampleEntity.service = service;
}

// Methods

@PostConstruct
public void createExternalResource() {
if (externalResourceId == null || externalResourceId.isEmpty()) {
externalResourceId = service.createExternalResource();
}
}

@JpaAnnotation
public void deleteExternalResource() { // This is my example of the cleanUp method
service.deleteExternalResource(externalResourceId);
}

}

最佳答案

JPA管理的Pojo称为Entity。

实体具有生命周期回调方法:

@PrePersist/@PostPersist
@PreRemove/@PostRemove
@PreUpdate/@PostUpdate
@PostLoad

@PostConstruct、@PostRemove 是 Spring bean 的回调方法。它永远不会被调用,因为实体不是由 Spring 创建的。实体代表表行数据,它们由JPA管理。您可以在插入数据时使用 new 关键字创建它们。从数据库读取时,它们是由 JPA 创建的。

关于java - 删除时执行 JPA 管理实体的清理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55287086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com