SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Groovy+GrailsでRailsなWeb開発

GroovyとGoogle App Engineでアプリ開発(後編)
~Googleのサービスを利用する方法

Groovy+GrailsでRailsなWeb開発 番外編 後編

  • X ポスト
  • このエントリーをはてなブックマークに追加

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クラスです。単にiddataというprivateフィールド、そしてそれらのアクセサがあるだけです。ただし、それ以外にこまごまとしたアノテーションが記述されています。これが、JDOで永続化可能クラスとして扱えるようにするための秘密なのです。JDOで利用するクラスは、次のようなアノテーションを用意し、シリアライズ可能であることを示す必要があります。

クラス定義のアノテーション
@PersistenceCapable(identityType = IdentityType.APPLICATION)
プライマリキーのアノテーション
@PrimaryKey
各フィールドのアノテーション
@Persistent

 ここでは、プライマリキーの@Persistentでは、(valueStrategy = IdGeneratorStrategy.IDENTITY)という指定を追記しています。これにより、IDを自動的に割り振るようにしています。

次のページ
データの保存を用意する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Groovy+GrailsでRailsなWeb開発連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4193 2009/08/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング