如何在GAE中更新持久对象时更新内存缓存中的数据

时间:2010-03-02 18:15:43

标签: java google-app-engine google-cloud-datastore memcached

也许我错过了一些简单的事情,因为我认为这是一种常见的情况......

当我使用从数据存储区检索的对象时,我想检测对象的任何更改并更新内存缓存。在非JDO场景中,这很容易,因为任何数据逻辑层都会拦截所有更新,因此有机会更新内存缓存。

但是,使用JDO,更新是通过更新附加对象,然后让持久性管理器在关闭时完成其余操作来实现的,因此我的代码永远不会收到更新通知。我可以将事件放入我的所有getter和setter中,以通知我对象的更改,但我宁愿避免这种情况。

任何有关如何正常完成此事的线索都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您可以在JDO带注释的对象中添加preUpdate hook。这听起来像是适用于您的用例。

链接中的示例代码:

  @Entity
  public class Thing {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     // Your Primary Key

     // Getters, setters, constructors, oh my!

     @PrePersist
     @PreUpdate
     public void prePersist() {
       // get JCache client instance
       // serialize object
       //store in cache
     }
} 

编辑:糟糕,这是一个JPA示例。该链接有JDO示例。