少し時間が出来たのでGAE(Google App Engine)について
詳細は以下URL参照なのだ
http://code.google.com/p/appengine-cl/
今回は以下の二つについて。
1.PersistenceManagerの呼び出し方法
2.データの永続化(登録)
細々しい事は書くと意味不明になるので割愛しようと思う。
まず
1.PersistenceManagerの呼び出し方法
について。
そもそも論から入ってしまうが、GAEではDBではなく、
データストアにエンティティを持たせるという形でデータの永続化を行う。
なので、データアクセスの仕方もEJBとかとは違って
PersistenceManager(以下PM)というものを使って行う。
そんで、今回はその呼び出し方。
PMはPersistenceManagerFactory(以下PMF)という
生成する用のクラス(ファクトリ)から作成されるのだけれど、
その仕組みは
PMFはシングルトンクラスとし、1つ以上インスタンス化ができないようにする。
→PMFはfinalなPMF変数を持つ。(シングルトンだからね)
そのfinalなPMF変数はJDOHelperのメソッドにデータ永続化用の設定ファイル(jdoconfig.xml)
のパラメータ(transactions-optional)を引数として渡す事で用意されます。
ex.PMFクラスのフィールド
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
ex.呼び出し方
PersistenceManager pm = PMF.get().getPersistenceManager();
これで生成したpmインスタンスを用いてデータストアとのやりとりを行う模様。
まあ簡単に書くと、
PMFクラスからpmfインスタンスを取得して使う。
その時に陰でJDOHelperのお世話になる。
という流れ。
次に
2.データの永続化(登録)
について。
個人的にはO/Rマッピングに近いのかという印象を受けたけど
エンティティというものを用いて、データストアに対してデータの永続化を行う。
この時のエンティティの書き方。
1.クラスにアノテーションを付ける
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Hoge{
//--
}
2.メンバ変数にLong型のidを定義して、アノテーションを2つ付ける。
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
3.永続化するメンバー変数にアノテーションを付ける。
@Persistent
private String hoge;
まあ、要はアノテーション付けろよって話みたいです。
4.エンティティが出来たらデータ保存!
PersistenceManager pm = PMF.get().getPersistenceManager();
Hoge hoge = new Hoge();
hoge.setHoge("hoge");
try {
pm.makePersistent(e);
} finally {
pm.close();
}
※保存が終わったらちゃんとクローズすること。
以上で保存までの流れ。
ちなみにまだ実践してない。