我有一套需要重構的包中的JDO持久性能力類。在Google App Engine中包含JDO @PersistenceCapable類的重構包
我知道如果您更改類名稱,那麼您需要更新「BigTables」對象。但是,如果我更改Java對象所屬的包,這是否意味着「BigTables」中的數據對象需要以某種方式更新?
即com.example.test.Person - > com.example.blah.Person
我有一套需要重構的包中的JDO持久性能力類。在Google App Engine中包含JDO @PersistenceCapable類的重構包
我知道如果您更改類名稱,那麼您需要更新「BigTables」對象。但是,如果我更改Java對象所屬的包,這是否意味着「BigTables」中的數據對象需要以某種方式更新?
即com.example.test.Person - > com.example.blah.Person
的一點點道理在官方文檔中記錄下Object Fields and Entity Properties。以下是重構規則的結果:
如果您需要進行上述簡單修改無法實現的重構,則可能需要使用App Engine mapreduce library。
我假設的情況是這樣的:
我有一個類「com.peter.Foo」我一直在使用JDO堅持,我想將它更改爲「com.nick.Foo 「,我所有現有的Foo實體都需要更新嗎?換句話說,JDO是否在將java類映射到數據存儲區Kind時使用包名?
AFAIK,appengine中的JDO工具只使用類名。這是因爲當我查看管理控制檯時,數據查看器和數據存儲區統計信息僅通過類名引用我的實體。因此,如果您保持類名相同,只更改包名稱,那麼您的實體應該沒問題。
謝謝。我會測試它並報告回來,以防其他人有相同的問題 – corydoras 2010-07-22 00:01:13
如果管理控制檯只顯示類名稱,那麼你是正確的: JDO只有它才能運行。更改軟件包不會影響反序列化。 – 2010-07-22 10:05:23
我認爲OP的問題關鍵在於更改當您更改某個類的包時會發生什麼。 – 2010-07-21 18:56:58
有用的信息,但不是我所問的(: – corydoras 2010-07-22 00:00:32