libro
www.tuyano.com
初心者のためのPlay Framework入門

EBeanによるModelの作成[Java編] (2/5)

作成:2013-03-03 11:04
更新:2013-03-03 11:04

■Modelクラスの作成

では、実際にEBeanを利用してデータベースアクセスを行なってみましょう。そのために用意する処理は? それは「Model」クラスを作ることだけです。

「え、まだデータベースとかテーブルの定義とかしてないよ?」と思った人。必要ありません。Playでは、Modelさえ定義すれば、あとはそれにあわせてテーブルを生成させることが可能です。ScalaでModelを作ったときには、テーブル作成のためのSQLクエリーを用意しなければいけませんでしたが、Javaではそれも不要。本当に「Modelクラスさえ作れば、あとは勝手にやってくれる」のです。

Modelクラスは、play.db.ebean.Modelというクラスとして用意されています。modelsパッケージに、このModelを継承したクラスを作成することでModelクラスを作れます。

Modelクラスは、基本的にいくつかのpublicフィールドで構成された形になります。このpublicフィールドが、テーブルに保管される項目となるのです。ただし、単にフィールドを記述するだけでなく、いくつかのアノテーションを用意する必要があります。以下にModelクラス定義の基本形を整理しておきましょう。
package models;

import javax.persistence.*;
import play.db.ebean.*;

@Entity
public class クラス extends Model {

    @id
    public Long id;
    ……フィールドを用意……

}

@Entityは、このクラスがエンティティとなることを示すアノテーションです。「エンティティ」なんて単語が登場することからもわかるように、これはjavax.persistenceパッケージにある@Entityです。実はJPAのAPIをそのまま使ってたんですね。

publicフィールドは、基本的にただ書いておくだけでOKなんですが、idフィールドだけは必須で用意しておいたほうが良いでしょう。@idを指定したフィールドです。これがプライマリキーとなります。

では、簡単なサンプルを下に掲載しておきましょう。SampleDataというクラスで、簡単なメモ情報を保管するためのModelです。基本部分の説明は不要でしょうが、それとは別に「Finder」というクラスのインスタンスを保管するフィールドが追加されていますね。

このFinderというのは、EBeanに用意されているクラスで、必要に応じてModelのインスタンスを検索したりするための仕組みを提供してくれるものです。まぁ、コントローラーで必要に応じて作ってもいいのですが、Model内に用意しておいたほうがスマートに利用できるので作っておくことにします。

このFinderは、総称型の値を引数に指定してインスタンスを作成します。整理するとざっと以下のような形となるでしょう。
new Finder< [id型] , [Model] >( [id型のclass] , [Modelのclass] );

これで、指定のID型をプライマリキーとするModelを検索するためのFinderインスタンスが用意できます。後は、このFinderを利用して、コントローラーで必要な検索などを行うことができます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package models;

import javax.persistence.*;
import play.db.ebean.*;

@Entity
public class SampleData extends Model {

    @Id
    public Long id;

    public String name;

    public String title;
    public String memo;

    public static Finder<Long, SampleData> find = 
        new Finder<Long, SampleData>(Long.class, SampleData.class);

}
※関連コンテンツ

「初心者のためのPlay Framework入門」に戻る