2010/04/23

GAE/J入門 第二回 ~データの読み込み・更新~ [ GAE ]

前回に引き続きGAE/Jです。
今日はこちら(Chapter3)を参考にして読み込みと更新にチャレンジします。

1.特定のクラス情報を全て取得
といっても取得したいクラスを全件取ってくるだけなら非常に簡単。

まずはQueryクラスを、取得したいクラスを指定してインスタンス化します。
例えば前回の例を引き続き使って、Postクラスを全件取得する場合はまず、

Query query = pm.newQuery(Post.class);

こうなる。勿論pmはPersistenceManagerね。
で、後はこのqueryを実行するのみ。実行はそのまんま

query.execute();

で実行できます。ただexecuteメソッドはObjectを返すので
これはキャストしないといけないですね。

List list = (List) query.execute();

こうかな?
(未検査のキャストになるためこれは警告が出ます。気持ち悪い…
 これは今後解決されるのでしょうか?)

あ、後わすれがちですがPersistenceManagerクラスからQueryのインスタンスを
取得するタイミング、またその後Queryのexecuteメソッドを実行するタイミングで
各々try-catch節で囲む必要があります。またqueryはcloseAllメソッドで、
pmはcloseメソッドで各々finally節の中でちゃんと閉じてあげましょう。


2.特定のクラスを、IDの値を指定して取得
今度は特定のクラスに対して、idの値(永続化が行われるクラスは必ずidを持つ)を
指定して取得する方法です。こちらは
PersistenceManagerのgetObjectById()メソッドを使います。
第一引数がクラス、第二引数がIDの値という事で・・・

getObjectById(Class arg0, Long arg1);

こんな感じですね。

3.データの更新
今度は永続したデータの更新なんですが、これが割と簡単。
2.で取得したクラスに対して値を再度セットしたのちに
新規登録の時と同じように永続化を行うだけ。具体的には
PersistenceManagerオブジェクトのmakePersistentメソッドを
実行するだけ。これで更新できます。


3章の内容として後JSPの使い方ってのもあったんですがこれは
GAEの本質からちょっとずれるので今回はパスします。

これで現在GAEを使って

1.データの登録(RDBのInsert)
2.データの取得(RDBのSelect・・といっても主キー指定と全件どちらか)
3.データの更新(RDBのupdate)

までできるようになった!(`・ω・´)

0 件のコメント: