Google App Engine低级API - 将自定义对象保存为Blob?

时间:2012-12-30 15:37:29

标签: java google-app-engine

我有一个自定义对象,我想保存在数据存储区(而不是blobstore)中。 像

这样的东西
Entity.setProperty("myobj", custonObject)

我在此customObject中有一个用户列表

public user class{
 String name;
 String age;
}

public user_s class{

 List<user> userList;

 public user_s(){
  userList = new ArrayList<user>();
 }
}

然后我想保存user_s。

我想我需要一些序列化,如果可能的话。我可以看到数据存储区中有一个Blob类,但是你如何使用它? https://developers.google.com/appengine/docs/java/datastore/entities

此致

2 个答案:

答案 0 :(得分:1)

我知道您的问题专门说“低级API”,但如果您想避免在任何地方制作样板序列化代码,您可能需要考虑使用Objectify。然后,您只需在要存储的自定义对象列表中使用@Serialized注释。

我称之为Objectify“中低级别” - 它为您提供了高度的控制,您可以完全按照自己的意愿操作数据存储区,而不会对JDO进行抽象/阻碍,但仍然可以避免一堆样板。

答案 1 :(得分:0)

是的,有一个Blob类。

序列化很简单:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(obj);
    Blob blob = new Blob(baos.toByteArray());