变化的实体类与开发应用程序引擎问题
问题描述:
我的问题是非常明显的:变化的实体类与开发应用程序引擎问题
- 我有一个名为
TaskDescription
类这相当于在App Engine数据存储的一种(表)。 然后我将它重命名为TaskContent
,并且所有存储的数据现在似乎都已丢失(因为类名是所谓的kind
名称是存储数据路径的一部分)。 - 我意识到,每次我重命名任何实体类中的单个字段时,都会发生几乎相同的问题。
在这个世界上没有什么是完美的,我怀疑它有可能从头开始创建所有绝对正确的实体,并且在此之后从不改变它们。
那么,如何处理这个问题呢?
答
两种方式:
离开实体,因为它们并更改映射:在客观化,你可以设置entity to class name mapping:例如@Entity(名称= “实体名称”)。
更改数据存储中的实体:由于数据存储是无模式的,因此无法通过简单的命令完成此操作。对于实体名称更改,您需要创建一个新实体,复制所有属性并删除旧实体。人们通常使用MapReduce jobs to perform datastore maintenance。这里是MapReduce for java。
对于字段名称的变化,objectify有明确的support for migrating schemas(没有模式,但他们仍然这样调用它)。
+1
@谢谢,非常有用的信息。 – Roman 2011-02-28 17:43:18
你在使用什么API? JDO? JPA?低级别的? – 2011-02-28 15:56:10
@Peter Knego:objectify – Roman 2011-02-28 16:54:41