CRUDによる自動生成
こうしたデータベースの基本操作である「新規作成」「表示」「修正」「削除」は、Create/Read/Update/Deleteのイニシャルをとって「CRUD」と呼ばれています。データベースを利用する場合、このCRUDは基本中の基本と言える操作でしょう。しかし「データベースでは必ずこれらを作らねばならない」というわけではありません。多くのデータベースでは、「表示」だけがあればよく、それ以外は管理者が一時的に利用するだけ、ということもあります。そうした場合にも、常にCRUDの全機能を実装しなければならないのは少々面倒です。
Play!では、このCRUDの機能を自動生成できます。これは文字どおり「CRUD」と呼ばれるモジュールを利用します。実際に、先ほどのMsgData利用のための機能をCRUDモジュールで再構築してみましょう。
まず、CRUDモジュールを利用可能にします。これは「conf」内にある「application.conf」を開き、次のように記述するだけです。
module.crud=${play.path}/modules/crud
これでモジュールがロードされるようになります。続いて、プログラムの修正を行います。MsgDataは手を加える必要はありません。修正するのは、コントローラーであるApplication.javaだけです。
package controllers;
import models.*;
import play.*;
import play.mvc.*;
@CRUD.For(MsgData.class)
public class Application extends CRUD {}
Applicationクラスに実装したメソッドなどはすべて消えていて空っぽのクラスになっていますが、これでOKです。CRUDモジュールを利用する場合、ポイントは2つです。
- CRUDクラスを継承してクラスを定義すること
- クラス名の前に、利用するモデルクラスを「
@CRUD.For」アノテーションで記しておくこと
この2点さえ正しくできていれば、他は何も必要ありません。またテンプレートも不要なので、作成した「views」内の「Application」フォルダは、フォルダごと外に出すなりして使えなくしておきましょう。
これでできました。Eclipseなどを使っていた場合は「extends CRUD」のところで「クラスが見つからない」とエラーが出ると思いますが、これは問題ありません。実は、CRUDモジュールというクラスは存在しません。実行時にオンデマンドで生成されるため、編集の段階ではエラーになりますが、そのまま実行すれば問題なく動きます。
http://localhost:9000/にアクセスすると、「Administration」と表示されたページが現れます。これがCRUDモジュールによって自動生成されたトップページです。ここで[Application]をクリックすると、Applicationクラスに@CRUD.Forで指定したMsgDataの一覧が表示されます。そこからデータを修正・削除したり、新たに作成したりできるようになります。
![CRUDモジュールにより自動生成されたトップページ。[Application]のリンクをクリックすると、Applicationに登録したMsgDataの一覧が表示され、データの作成・修正・削除などを行うことができるようになる](http://cz-cdn.shoeisha.jp/static/images/article/4751/6.gif)

