SHOEISHA iD

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~本格的なRoRスタイルフレームワーク「Play!」(2)

第8回

CRUDによる自動生成

 こうしたデータベースの基本操作である「新規作成」「表示」「修正」「削除」は、CreateReadUpdateDeleteのイニシャルをとって「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の一覧が表示され、データの作成・修正・削除などを行うことができるようになる
CRUDモジュールにより自動生成されたトップページ。[Application]のリンクをクリックすると、Applicationに登録したMsgDataの一覧が表示され、データの作成・修正・削除などを行うことができるようになる
データの一覧表示。ここから項目をクリックすればデータの修正・削除を行うことができる
データの一覧表示。ここから項目をクリックすればデータの修正・削除を行うことができる

次のページ
管理者モードの追加

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

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4751 2010/01/28 14:00

イベント

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

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

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

メールバックナンバー