JPA:如何检测现有实体是否已更新?

时间:2013-08-29 10:47:36

标签: java hibernate jpa

有没有更好的方法来检查/检测实体是否在db中更新?原因是系统发布对外部Web服务的任何更改,如果没有更改,我们不想发布,因为Web服务响应缓慢(我们希望保持肥皂体轻,因为我们发布变量文本长度)。 / p>

我目前的方法如下所述:

对于给定的实体:

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);
            }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

这不是JPA的答案,但是,如果您使用的是Oracle,DCN是一个相当不错的API。检查一下:

http://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgnf.htm