Как обновить данные в memcache, когда постоянный объект обновляется в GAE - PullRequest
1 голос
/ 02 марта 2010

Возможно, мне не хватает чего-то простого, так как я считаю, что это распространенный сценарий ...

Когда я работаю с объектом, полученным из хранилища данных, я хочу обнаружить любые изменения в объекте и обновить memcache. В сценарии, не связанном с JDO, это будет легко, поскольку любой уровень логики данных будет перехватывать все обновления и, таким образом, будет иметь возможность обновить memcache.

Однако в JDO обновления выполняются путем обновления прикрепленных объектов, а затем позволяет администратору постоянства делать все остальное, когда он закрывается, и поэтому мой код никогда не уведомляется об обновлениях. Я мог бы помещать события во все мои методы получения и установки, чтобы получать уведомления об изменениях в моих объектах, но я бы предпочел этого избежать.

Буду признателен за любые подсказки о том, как это обычно делается.

1 Ответ

2 голосов
/ 03 марта 2010

Вы можете добавить preUpdate hook к вашим аннотированным объектам JDO. Похоже, это будет работать для вашего случая использования.

Пример кода по ссылке:

  @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.

...