GroovyとGoogle App Engineでアプリ開発(後編)
~Googleのサービスを利用する方法
Groovy+GrailsでRailsなWeb開発 番外編 後編
JDO設定ファイルについて
続いて、JDOを利用するための設定ファイルを用意します。しかし、実はEclipseでプロジェクトを作成すると、これは自動的に作成されます。「src」内にある「META-INF」フォルダの中に用意されている「jdoconfig.xml」がそれにあたります。これを開くと、次のように記述されているのが分かります。
<?xml version="1.0" encoding="utf-8"?> <jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> <persistence-manager-factory name="transactions-optional"> <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/> <property name="javax.jdo.option.ConnectionURL" value="appengine"/> <property name="javax.jdo.option.NontransactionalRead" value="true"/> <property name="javax.jdo.option.NontransactionalWrite" value="true"/> <property name="javax.jdo.option.RetainValues" value="true"/> <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> </persistence-manager-factory> </jdoconfig>
ここで、PersistenceManagerFactoryのクラスの指定や、各種オプション設定の情報を用意します。これらは特に修正する必要はないので、そのまま使ってください。
SimpleDataクラスの作成
では、実際にデータストアに保管するオブジェクトのクラスを定義しましょう。これは、Groovyではなく、Javaのクラスとして作成します。実際に試してみたのですが、Groovyで作成したクラスはJDOに「永続化可能なクラスである」と認めてもらえないようで、うまく動きませんでした。そこで、この部分に関してはJavaにお願いすることにします。
プロジェクトの「src」フォルダには、「gae_app」というパッケージがデフォルトで用意されているので、この中にクラスを用意することにしましょう。「SampleData.java」というファイルを用意し、次のように記述をしてください。
package gae_app;
import javax.jdo.annotations.*;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class SampleData {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String data;
SampleData(String d){
this.data = d;
}
public Long getId() {
return id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
見れば分かるように、非常にシンプルなBeanクラスです。単にidとdataというprivateフィールド、そしてそれらのアクセサがあるだけです。ただし、それ以外にこまごまとしたアノテーションが記述されています。これが、JDOで永続化可能クラスとして扱えるようにするための秘密なのです。JDOで利用するクラスは、次のようなアノテーションを用意し、シリアライズ可能であることを示す必要があります。
@PersistenceCapable(identityType = IdentityType.APPLICATION)
@PrimaryKey
@Persistent
ここでは、プライマリキーの@Persistentでは、(valueStrategy = IdGeneratorStrategy.IDENTITY)という指定を追記しています。これにより、IDを自動的に割り振るようにしています。
この記事は参考になりましたか?
- Groovy+GrailsでRailsなWeb開発連載記事一覧
-
- GroovyとGoogle App Engineでアプリ開発(番外編) ~GAEで利用でき...
- GroovyとGoogle App Engineでアプリ開発(後編) ~Googleのサー...
- GroovyとGoogle App Engineでアプリ開発(前編) ~GroovyでWe...
- この記事の著者
-
掌田 津耶乃(ショウダ ツヤノ)
三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
