保管した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オブジェクトを取得しておき、getListでSampleDataのListを取得し返すようにしています。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>
