Java JPA:如何检测现有实体是否已更新?
是否有更好的方法来检查/检测数据库中是否更新了实体?原因是系统会发布对外部Web服务的任何更改,如果没有更改,我们就不想发布,因为Web服务的响应速度很慢(我们希望在发布可变文本长度时保持soap正文的轻量级) 我目前的做法如下: 对于给定实体:Java JPA:如何检测现有实体是否已更新?,java,hibernate,jpa,Java,Hibernate,Jpa,是否有更好的方法来检查/检测数据库中是否更新了实体?原因是系统会发布对外部Web服务的任何更改,如果没有更改,我们就不想发布,因为Web服务的响应速度很慢(我们希望在发布可变文本长度时保持soap正文的轻量级) 我目前的做法如下: 对于给定实体: public class Comment { int id; String text; } 在我的服务类中,我会这样检测: public class CommentServiceImpl { void saveList(List&l
public class Comment {
int id;
String text;
}
在我的服务类中,我会这样检测:
public class CommentServiceImpl {
void saveList(List<Comment> comments) {
for(Comment c : comments) {
Comment existing = this.findById(c.id);
if (existing != null) {
boolean nochange = existing.getText().equals(c.getText());
if (nochange) {
//do nothing, we don't want to publish to external webservice
} else {
this.save(c);
externalWs.publish(c);
}
}
}
}
公共类CommentServiceImpl{
作废保存列表(列表注释){
对于(注释c:注释){
注释existing=this.findById(c.id);
if(现有!=null){
布尔nochange=existing.getText().equals(c.getText());
if(nochange){
//不执行任何操作,我们不希望发布到外部Web服务
}否则{
这一点。保存(c);
外部发布(c);
}
}
}
}
这在JPA中不是一个答案,但是,如果您使用的是Oracle,DCN是一个非常好的api。请检查它:
数据库中最后更新的列如何?这可以由数据库或应用程序自动更新,这是您的选择。然后让Web服务返回自某个时间戳以来更新的所有条目。