SHOEISHA iD

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集
~クールなGUIをシンプルなスクリプトで作成するZK(3)

第22回

  • X ポスト
  • このエントリーをはてなブックマークに追加

DAO経由でデータベースにアクセスする

 では、このDAOクラスを利用してデータベースアクセスするスクリプトを作成してみることにしましょう。ここでは一例として、findAllを呼び出してデータの一覧を表示させてみます。

<?page title="Index Page"?>
<zk>
  <zscript>
  var gmsg = "";
  
  public class DAO { ……略…… }

  class SampleRowData {
    private String name;
    private String mail;
    private String tel;
    
    public SampleRowData(){}
    public SampleRowData(String s1,String s2,String s3){
      name = s1;
      mail = s2;
      tel = s3;
    }
    
    public String getName(){ return name; }
    public void setName(String s){ name = s; }
    public String getMail(){ return mail; }
    public void setMail(String s){ mail = s; }
    public String getTel(){ return tel; }
    public void setTel(String s){ tel = s; }
  }
  class SampleRowRenderer implements RowRenderer {
    public void render(Row row, java.lang.Object obj){
      SampleRowData data = (SampleRowData)obj;
      new Label(data.getName()).setParent(row);
      new Label(data.getMail()).setParent(row);
      new Label(data.getTel()).setParent(row);
    }
  }
  
  DAO dao = new DAO();
  ArrayList result = dao.findAll();
  ListModelList modellist = new ListModelList(result);
  SampleRowRenderer renderer = new SampleRowRenderer();
  </zscript>
  
  <window title="Welcome to ZK!" border="normal" width="500px">
    <label>※入力フォームのレイアウト</label>
    <separator />[${gmsg}]<separator />
    <grid width="90%" model="${modellist}" rowRenderer="${renderer}">
      <columns sizable="true">
        <column label="名前" />
        <column label="メールアドレス" />
        <column label="電話番号" />
      </columns>
    </grid>
    <separator /><separator />
  </window>
</zk>

 アクセスすると、<grid>を使ってデータを表にまとめて表示します。ここではDAOの他、データを保管するためのSampleRowDataクラスと、行データを表示するためのSampleRowRendererクラスを用意してあります。スクリプトでは、DAOインスタンスを作成し、findAllを呼び出してデータをListとして取得し、SampleRowRendererでレンダラーを作成しています。

DAO dao = new DAO();
ArrayList result = dao.findAll();
ListModelList modellist = new ListModelList(result);
SampleRowRenderer renderer = new SampleRowRenderer();

 こうして用意されたデータのListとレンダラーを使い、<grid>にデータを表示させています。それが以下の部分です。

<grid width="90%" model="${modellist}" rowRenderer="${renderer}">
  <columns sizable="true">
    <column label="名前" />
    <column label="メールアドレス" />
    <column label="電話番号" />
  </columns>
</grid>

 見れば分かるように、繰り返しなどは一切使っていませんし、実際にデータを表示する<rows>タグはありません。ここでは、<grid>に「model="${modellist}"」というようにしてmodel属性を設定しています。このようにmodelを使ってListや配列を指定することで、その中身を自動的に表示するようにできるのです。いちいち繰り返しなどを使ってデータを出力する必要はありません。

 ここではデータの一覧を表示しているだけですが、DAOには既にデータベースアクセスの基本メソッドは用意されていますから、これを利用してデータベースアクセスするのは簡単です。例えばデータを追加/削除したければ、次のように実行するだけです。

データを追加
dao.insert(new SampleRowData("はなこ","hanako@tanaka.com","070-777-777"));
データを削除
dao.delete("たろう");

 それぞれで、DAOを利用した機能を実装してみるとよいでしょう。ZKには、確かにデータベース専用の機能はありませんが、これは「特別なことは何も無い」と考えることもできます。ごく普通のアプリケーションでデータベースにアクセスできるなら、ZKでもまったく同じやり方でできるはずなのです。

まとめ

 3回に渡って、ZKによるWebアプリケーション作成について説明をしてきました。ZKは、厳密に言えば「Javaフレームワーク」とはいえないものでしょう。確かにサーバーサイドJavaの技術を使って実装されており、サーブレットコンテナで動作はしますが、そこで使用するスクリプトはJava(BeanShell)に限定されているわけではなく、JRubyやJythonなどさまざまなスクリプト言語を利用してコーディングできます。Javaの上に構築されていますが、Javaなど知らないRubyやPythonのプログラマがそのままZKで開発を行うこともできるのです。

 Javaは、「Javaというプログラミング言語」としてだけでなく、今やさまざまな言語を動かすための「環境」として浸透しつつあります。Javaベースだけれど、Java以外の言語を利用したフレームワークは、今後も増えていくことでしょう。こうした「Javaという環境」を使ったフレームワークの代表格として、ZKは非常に注目すべきものと言えるのではないでしょうか。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5364 2010/09/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング