2010年1月27日水曜日

"Low-level API"でデータストアにオブジェクトを格納

スズキです。

下記記事を参考にしています。
http://gae.g.hatena.ne.jp/a-know/20091029/1256825590

Blog型として、データストアにオブジェクトを格納するのですが、
シリアライズ/デシリアライズに、
ObjectInput/OutputStream、ByteArrayInput/OutputStream
を利用しています。

▼ オブジェクトのSET
--------【Java】--------
...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.reset();
oos.writeObject(<Serializableなオブジェクト>);
oos.flush();
entity.setProperty("value", new Blob(baos.toByteArray())); // オブジェクトのSET
oos.close();
baos.close();
...
--------

▼ オブジェクトのGET
--------【Java】--------
...
Blob blob = (Blob)entity.getProperty("value");
ByteArrayInputStream bais = new ByteArrayInputStream(blob.getBytes());
ObjectInputStream ois = new ObjectInputStream(bais);
(<Serializableなオブジェクト>)ois.readObject()); // オブジェクトのGET
ois.close();
bais.close();
...
--------

データストアも、結構、こなれてきたぞ...

--------
http://www.suz-lab.com

0 コメント: