連載
» 2008年08月22日 00時00分 公開

オブジェクトで通信するAMFとS2JDBCによるDB接続業務用RIAの本命!? Flex+Java開発入門(4)(4/4 ページ)

[福田寅成,クラスメソッド株式会社]
前のページへ 1|2|3|4       

「jdbc.dicon」

 最初のサンプルの初期設定のところで出てきましたが、サンプルDBのパスを登録しています。

「s2jdbc.dicon」

 このファイルでは、S2JDBCで用いるSQLダイアレクト(方言)を指定しています。H2データベースを利用しているので、h2Dialectが有効になっています。

Seasarアプリケーションのレスポンス

図3 Seasar2アプリケーションの階層構造 図3 Seasar2アプリケーションの階層構造

 次に、サーバ側アプリケーションのパッケージ構造を確認しておきましょう。シンプルで分かりやすいので、構造そのものに関しての解説は省略します。

 それでは、QuizServiceクラスのソースを見ていきましょう。Flex側でのRemoteObjectによる呼び出しから分かるとおり、Flexから直接呼ばれるのが、このQuizServiceのメソッドになります。

 Flex側からのリクエストDTOによる値の受け渡しはないので、空のレスポンスDTOを作成し、DB検索処理を行って必要なデータを取得し、それらを全部レスポンスDTOに詰め込んでクライアントに返しています。

    public QuizResponseDto getQuiz(QuizRequestDto requestDto) {
        // 戻り値の作成
        QuizResponseDto responseDto = new QuizResponseDto();
    
        // 設問の検索の実行
        responseDto.quizList = quizJdbc.getQuiz();
    
        // コメントの検索の実行
        responseDto.commentList = commentJdbc.getComment();
    
        // 検索結果をクライアントに返す
        return responseDto;
    }

S2JDBCによるDBアクセス処理

 サンプル解説の最後は、S2JDBCによるDBアクセス処理になります。

接続するDBの中身を確認

 第2回の記事の4ページ目に書きましたDBViewerでDBの中身を確認しておきます。

図4 DB定義 図4 DB定義
データベース定義名 H2 at QuizS2BlazeDS(適当でいいです)
JDBCドライバ {AtmarkitQuizAppBlazeDSプロジェクト}\WEB-INF\lib\h2-2007-12-27.jar
表1
図5 接続情報の設定 図5 接続情報の設定
JDBC Driver org.h2.Driver
JDBCタイプ タイプ4
接続文字列 jdbc:h2:C:\Users\fukuda.tomonari\Documents\
FLEXBU~3\AtmarkitQuizAppBlazeDS\data\demo
接続ユーザー sa
接続パスワード (なし)
接続スキーマ sa
表2
図6 DB定義情報 図6 DB定義情報

 前回のStruts版クイズアプリケーションのXMLでデータを定義した場合と同じデータ構造です。「QUIZ」テーブルには「QUESTION」「SELECTORS」「CORRECT」カラムが、「COMMENT」テーブルには「COMMENT」カラムがあります。

S2JDBCのソースコードを見てみよう

 次に、S2JDBCの処理ですが、「QUIZ」テーブルへの処理と「COMMENT」テーブルへの処理はほとんど同じなので、QuizJdbcクラスのソースを確認します。

    /**
    * {@link Quiz}テーブルのデータを全件取得します。
    * 
    * @return {@link Quiz}
    */
    public List<Quiz> getQuiz() {
        return jdbcManager.from(Quiz.class).getResultList();
    }

 1行しかないシンプルな処理です。日本語に翻訳すると「QUIZテーブルから(WHERE句やORDER BY句なしに)全件取得する」処理を行っています。SQLに直すと「select * from QUIZ」の処理を行っています。

 こういったシンプルなクエリや簡単なWHERE句、ORDER BY句のクエリであれば、SQLを用意する必要がなしに処理を実装できるので、S2JDBCは楽ですね。複雑な検索処理などはS2JDBCでSQLを利用する方法を選択すればOKです(次回の記事で取り上げる予定です)。

O/Rマッピング部分のソースコードも見てみよう

 このgetQuizメソッドの戻り値に注目するとQuizのListが返っています。ここでJava側のQuizエンティティのソースを見てみます。

/**
* クイズテーブルに対応したエンティティ
*/
@Entity
public class Quiz implements Serializable {
    static final long serialVersionUID = 1L;
    
    /** 問題 */
    public String question;

 プロパティの部分を見ると、普通のJavaBeansですが、クラスに「@Entity」アノテーションが付加されています。このアノテーションによりこのJavaBeansがエンティティとして認識され、S2JDBCによってテーブルとエンティティオブジェクト間のO/Rマッピングが行われます。

編集部注:O/Rマッピングについて詳しく知りたい読者は、連載「Hibernateで理解するO/Rマッピング」をご覧ください。

コラム 「エンティティをDBから自動生成するツールとは?」

今回解説しませんが、このエンティティをDBから自動生成してくれるツールがSeasarで提供されています(Dolteng(どぅるてん)というツールの中に存在します)。簡単なテーブルなら手でエンティティクラスを作れますが、カラムの多いテーブルのエンティティは手で作るのは時間がかかりますからツールで生成するのが楽です。

Doltengに関しての詳細は、「Dolteng − SeasarWiki」を参照してください(Daoクラスの生成のところが今回利用する機能です、Daoクラスは自動生成後削除してしまいましょう)。


 以上で、Java側のアプリケーションの解説を終わります。

なぜAMF/BlazeDSを使うのか? 速いから!

 今回は今後主流になる可能性の高いFlex+S2BlazeDS+Javaでのアプリケーション開発に関してお伝えしました。BlazeDSは商用サポート付きのバージョンや機能の充実した上位バージョンも存在し、実案件で安心して選択できる通信フレームワークになっています。上位版を使っても、アプリケーションの作りや設定はBlazeDSで開発した場合と同じです。

 BlazeDSによる通信のメリットの1つに「パフォーマンス」があります。このパフォーマンス周りを実感できるサンプルアプリケーションを次回お伝えする予定です。

@IT関連記事

いまさら聞けないFlex、そして、いまこそ入門のとき!?
Flex 3正式版リリース! Flexの過去・現在・未来 先日ついに正式リリースされたFlashベースのRIA技術Flex 3。いまが入門に最適なFlexの過去・現在・未来を一挙に解説
リッチクライアント & 帳票」フォーラム 2008/3/31

作って学ぶAIRウィジェットの基礎→応用
最近よく聞くAdobe AIRって何だっけ? ウィジェットを簡単に作れるらしいけど…… と曖昧な知識のあなたに贈る超入門連載。楽しいサンプルを作って基礎から応用まで学ぼう

Webアプリの常識をJSPとStrutsで身につける
JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です。初心者・中堅・ベテランも大歓迎!

プロフィール

福田 寅成(ふくだ ともなり)

クラスメソッド株式会社 エンタープライズサービス部門 システムエンジニア

大手SIerでの長いJava開発経験を経てクラスメソッドに。 Java、JavaScript/Ajax、Flex、AIR、C#など、さまざまな分野に関する技術調査研究、および業務アプリケーション開発に携わる。 FlexやAIRの開発依頼はコチラ



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。