通过app-engine的开发改变实体类问题

时间:2011-02-28 15:31:21

标签: java google-app-engine refactoring nosql datastore

我的问题非常明显:

  1. 我有一个名为TaskDescription的类,它对应于App Engine数据存储区中的一种(表)。 然后我将它重命名为TaskContent并且所有存储的数据现在似乎都丢失了(因为类名称是所谓的kind名称是存储数据路径的一部分)。
  2. 我意识到每次重命名任何实体类中的单个字段时都会出现几乎相同的问题。
  3. 在这个世界上没有什么是完美的,我怀疑从头开始创建所有绝对正确的实体是可能的,并且在此之后永远不会改变它们。

    那么,如何处理这个问题呢?

1 个答案:

答案 0 :(得分:2)

两种方式:

  1. 保持实体不变并更改映射:在客观化中,您可以设置entity to class name mapping:例如: @Entity(名称= “实体名称”)。

  2. 更改数据存储区中的实体:由于数据存储区是无模式的,因此无法使用简单的命令完成此操作。对于实体名称更改,您需要创建新实体,复制所有属性并删除旧实体。人们通常使用MapReduce jobs to perform datastore maintenance。这是MapReduce for java

  3. 对于字段名称更改,objectify具有显式support for migrating schemas(没有架构,但它们仍然以这种方式调用)。