データストアとオブジェクト検索 (2/7)
作成:2010-05-03 14:16
更新:2010-05-10 17:10
更新:2010-05-10 17:10
■PersistenceManagerFactory取得クラスの作成
では、データストアを利用するためのプログラムを作成していきましょう。まずは、「PersistenceManagerFactory」と呼ばれるクラスを取得するためのクラスを作成します。
PersistenceManagerFactoryというのは、JDOで使われるクラスです。JDOでは、このPersistenceManagerFactoryクラスのインスタンスを取得し、そこからPersistenceManagerというクラスのインスタンスを取得して、そのメソッドを呼び出すことで保管されたオブジェクトにアクセスをします。つまりPersistenceManagerFactoryというクラスは、こうしたJDOによるデータアクセスの土台となる機能を提供してくれる重要なものなのです。
が、このPersistenceManagerFactory、インスタンス作成に非常に大きなコストがかかります。このため、呼び出される度にインスタンスを静止していたのでは、サーバーにかなりの負担がかかってしまいます。GAE/Jは、使用CPU量などで利用料金が決められますから、不必要に大きなコストのかかる処理を実行したくはないでしょう。
そこで、PersistenceManagerFactoryを取得するためのクラスを「シングルトン」として定義しておくことにします。シングルトンというのはデザインパターンの一つで、「常に1つのインスタンスしか存在しない」クラスのことです。
以下に、PersistenceManagerFactoryインスタンスを取得するための「PMF」クラスをあげておきましょう。ここではロード時にprivate static finalされたフィールドfactoryにPersistenceManagerFactoryインスタンスを設定しておきます。そしてデフォルトコンストラクタをprivateにすることでnewでインスタンス生成ができないようにしておき、インスタンスを取得するための「get」メソッドを用意しておきます。このgetは、常にfactoryフィールドの値を返すようにしています。こうすることで、ただ1つのインスタンスがすべてのケースで使われるようになります。
PersistenceManagerFactoryというのは、JDOで使われるクラスです。JDOでは、このPersistenceManagerFactoryクラスのインスタンスを取得し、そこからPersistenceManagerというクラスのインスタンスを取得して、そのメソッドを呼び出すことで保管されたオブジェクトにアクセスをします。つまりPersistenceManagerFactoryというクラスは、こうしたJDOによるデータアクセスの土台となる機能を提供してくれる重要なものなのです。
が、このPersistenceManagerFactory、インスタンス作成に非常に大きなコストがかかります。このため、呼び出される度にインスタンスを静止していたのでは、サーバーにかなりの負担がかかってしまいます。GAE/Jは、使用CPU量などで利用料金が決められますから、不必要に大きなコストのかかる処理を実行したくはないでしょう。
そこで、PersistenceManagerFactoryを取得するためのクラスを「シングルトン」として定義しておくことにします。シングルトンというのはデザインパターンの一つで、「常に1つのインスタンスしか存在しない」クラスのことです。
以下に、PersistenceManagerFactoryインスタンスを取得するための「PMF」クラスをあげておきましょう。ここではロード時にprivate static finalされたフィールドfactoryにPersistenceManagerFactoryインスタンスを設定しておきます。そしてデフォルトコンストラクタをprivateにすることでnewでインスタンス生成ができないようにしておき、インスタンスを取得するための「get」メソッドを用意しておきます。このgetは、常にfactoryフィールドの値を返すようにしています。こうすることで、ただ1つのインスタンスがすべてのケースで使われるようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package jp.tuyano; import javax.jdo.*; public class PMF { private static final PersistenceManagerFactory factory = JDOHelper.getPersistenceManagerFactory("transactions-optional"); private PMF(){} public static PersistenceManagerFactory get(){ return factory; } }
※関連コンテンツ
「Google App Engine for Java(GAE/J)プログラミング入門」に戻る