2010-03-02 67 views
1

也許我失去了一些東西簡單,因爲我認爲這是一個常見的場景...當持久化對象在GAE更新如何更新內存緩存中的數據

當我從檢索對象工作數據存儲,我想檢測對象的任何更改並更新內存緩存。在非JDO場景中,這很容易,因爲任何數據邏輯層都會攔截所有更新並因此有機會更新內存緩存。

但是,使用JDO,通過更新附加對象,然後讓持久管理員在關閉時執行其他更新,從而不會通知我的代碼更新。我可以將事件放入我的所有getter和setter中,以通知我對象的更改,但我寧願避免這種情況。

任何關於如何正常完成的線索將不勝感激。

+0

回答了我自己的問題,生命週期聽衆: http://www.datanucleus.org/products/accessplatform_1_1/jdo/lifecycle_listeners.html – tempy 2010-03-02 20:13:13

回答

2

您可以將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示例。

+0

其實我認爲你會想要做它後更新。鑑於數據存儲區喜歡隨機失敗,首先知道數據在放入緩存之前已成功保存,這將是一件好事。 – tempy 2010-03-03 13:35:00

相關問題