ここまで進んでくれば、この段階で「JavaBeans」の作成方法と使い方を覚えると更なるステップアップにつながる。
「Swing」などのGUIプログラミングで用いるコンポーネントもJavaBeansと呼ばれるが、WebアプリケーションにおけるJavaBeansとは、次の2つを示す。
ひとつ目は、まとめて扱いたい幾つかのデータをカプセル化し、一括して保持、管理するためのコンポーネントだ。JavaBeansには、作成のための幾つかルールがある。
JSPにはJavaBeansをスマートに利用するためのJSPアクションと呼ばれるタグがあり、これらルールに沿って作られたJavaBeansを扱うことができる。
もうひとつは、ビジネスロジック(※4)などを実装するためのコンポーネントである。ビジネスロジックは、ServletやJSPに実装しても一応動作するものを作成できる。しかし、ServletやJSPから独立したJavaBeansに実装しておけば、アプリケーション中のいろいろな個所で使い回せるメリットがある。
データを保持するJavaBeansや、ビジネスロジックを呼び出すと、データベースなどから取得した結果がServletである「スコープ」に保存され、JSPから参照される。この、ServletとJSPで同じデータを参照するための「スコープ」には、幾つか種類があるため、この使い分け方も身につけておきたいポイントだ(図4)。
※4 ビジネスロジック
「業務要件を満たすための処理」のこと。データベースの検索や、データの計算、データの加工処理などがビジネスロジックに分類される処理。HTTPリクエストの受付、画面遷移制御、セッション管理などはビジネスロジックには分類されない。
ここまで進むと、データベースアクセスの基本的なプログラミングは身についてくる。
Webアプリケーションでは「DataSource」を使ってデータベースへアクセスを行うのが一般的だ。DataSourceとは、アプリケーションとデータベースとの接続を一元管理するための仕組みだ。
さらに、このDataSourceを使うと接続プーリングを行うことができる。接続プーリングとは、DataSourceとデータベースとの間の接続を保持(プール)しておき、使い回す技術のことだ。
データベースへアクセスが必要な時に毎回認証、接続、解放を行わないため、リソースを有効利用でき、パフォーマンスが劇的に向上する。接続プーリングは実運用するシステムにおいては、事実上必須だといえる。
さらにDataSourceは、アプリケーションで独自に管理するものと、コンテナが管理するものに大別される。
コンテナ管理のDataSourceを使うとデータベースのホスト名、ユーザ名、パスワード、最大接続数、最小接続数、タイムアウト時間などの環境に依存した情報をコンテナで管理でき、アプリケーションからそのような環境依存の情報を完全に排除できる。そのため、コンテナ管理によるDataSourceを使うのが一般的だ。
コンテナ管理によるDataSourceを使う場合は、JNDIサービスを組み合わせる。
JNDIサービスの基本的な仕組みもここで理解したい。JNDIサービスとは、Java Naming Directory Interfaceの頭文字を取ったものであり、さまざまなオブジェクトに「JNDI名」という名前を付けて登録し、外部から名前を指定してオブジェクトを検索、取得できる仕組みだ(図5)。
DataSourceのほかにも、EJBで用いるホームオブジェクトや、UserTransactionオブジェクト、JavaMailで用いるMailSessionオブジェクトなどの管理にも広く使われている。単純な文字列(java.lang.String)オブジェクトも扱えるので、環境変数のような使い道も可能だ。
MVCとは、Model、View、Controllerそれぞれの頭文字をとったものであり、Webアプリケーション設計の基本的な考え方を指す。MVCモデルなどと表現することもある。
JavaBeans、JSP、Servletでアプリケーションを組む場合はJavaBeans、JSP、Servletがそれぞれ、Model、View、Controllerに対応する(表4)。MVCという考え方はWebアプリケーションの設計において非常に重要な考え方である。
表4■JavaBeans、JSP、Servlet を使ったMVCモデル区 分 | コンポーネント名 | 内 容 |
Model | JavaBeans | データモデル、ビジネスロジックの実装 |
View | JSP | 画面データの生成 |
Controller | Servlet | クライアントからの入力受付、リクエストの妥当性検査、セッション管理、ビジネスロジックの呼び出し、ビジネスロジックの実行結果に応じた遷移先画面の選択と画面遷移制御 |
MVCを意識して設計することにより、コンポーネント間の役割分担がはっきりして独立性が高まる。そのため、あるコンポーネントへの変更が他のコンポーネントへ影響することを最小限に抑えられるのだ、違った側面から言うと開発体制の分業化がしやすいというメリットも得られる。MVCモデルに基づいたWebアプリケーションの設計は事実上標準となっている。
Copyright © ITmedia, Inc. All Rights Reserved.