SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Groovy+GrailsでRailsなWeb開発

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

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

保管したSampleDataの表示

 続いて、データストアに保管したSampleDataを取り出し表示する処理を作成します。これは、JDOを使ってデータストアにアクセスし、SampleDataの一覧をListとして取得し、処理します。ここではデータ取得の部分だけBeanクラスとして用意し、それをGroovletからアクセスして利用します。

 まず、SampleDataの一覧をListとして返すBeanを定義します。「src」内に、新たに「ListBean.groovy」というファイルを用意し、次のようにソースコードを記述します。

import gae_app.SampleData
import javax.servlet.http.*
import javax.jdo.*

class ListBean {
	private PersistenceManager pm

	ListBean(){
		PersistenceManagerFactory pmf = PMF.get()
		pm = pmf.getPersistenceManager()
	}
	
	List<SampleData> getList(){
		String query = "select from " + SampleData.class.getName()
		return pm.newQuery(query).execute()
	}
}

 ここでは、コンストラクタでPersistenceManagerオブジェクトを取得しておき、getListSampleDataListを取得し返すようにしています。PersistenceManagerの取得は既に説明したとおりです。ここでのポイントは、getListでの処理です。

String query = "select from " + SampleData.class.getName()

 ここでは、まず実行するクエリーをStringとして用意します。「JDOでは、SQLは使えないのでは?」と思った人。これはSQLではなく、「JDOQL」というデータアクセス言語のクエリーなのです。既にデータベースアクセスにはSQLが広く使われているので、これに似た形式でデータアクセスできる簡易言語を用意してあるのです。あるクラスのオブジェクトをすべて取得する場合には、

select from クラス名

 このような形でクエリーを用意します。クラス名は、「クラス.class.getName」で取得します。こうして実行するクエリーが用意できたら、クエリーを示す「Query」クラスのインスタンスを作成し、その「execute」を実行します。

return pm.newQuery(query).execute()

 PersistenceManagerの「newQuery」は、引数に指定したクエリーを実行するためのQueryインスタンスを作成します。そして「execute」は、クエリーを実行し、結果を返す働きをします。返される結果は、取得したオブジェクトをListにまとめたものとなります。

 作成後、サーブレットを/listで公開するよう、web.xmlに追記します。

<servlet>
	<servlet-name>ListServlet</servlet-name>
	<servlet-class>ListServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>ListServlet</servlet-name>
	<url-pattern>/list</url-pattern>
</servlet-mapping>

次のページ
SampleDataの一覧を表示するGroovlet

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

Groovy+GrailsでRailsなWeb開発連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4193 2009/08/20 14:00

イベント

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

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

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

メールバックナンバー