TOPシステム開発> サーバ側との連携
Nexaweb Studio
Nexaweb Studioで手軽にリッチクライアントアプリケーション開発

第4回:Format_サーバ側との連携を実現する

著者:チェンジビジョン  岩永 寿来、豆蔵  長谷川 裕一
2007/6/19
前のページ  1  2   3  4  次のページ
サーバ側との連携

   次にはサーバ側との連携について紹介しよう。NexawebではNXML(画面)やMCOからサーブレットを呼び出すことでサーバ側と連携して動作するのだ。

レイヤ構成

   まず注文システムのレイヤ構成を図2に示す。Nexawebを利用したからといって、一般的なJSP/Servletを利用したWebアプリケーションの構成と大きく変わるところはない。

注文システムのレイヤ構成
図2:注文システムのレイヤ構成
(画像をクリックすると別ウィンドウに拡大図を表示します)

   この注文システムの動作概要としては、画面からのリクエストをサーブレットが受け取り、プレゼンテーション層に配置されたコントローラ「ProductController」を呼び出している。コントローラは画面からのリクエスト、例えばすべての商品の一覧を取得する処理をビジネス層に配置されるビジネスロジック「ProductServcie」に委譲している。そしてProductServiceはProductDaoを利用してデータアクセス層からデータ(今回はデータベースから)を取得する。

   ProductDaoがデータベースから取得した商品に関するデータは、最初にProductエンティティに格納されている。その後、プレゼンテーション層で扱いやすいように属性やメソッドの追加などを行い、拡張したトランスファーオブジェクトProductToクラスに格納し直してプレゼンテーション層に渡している。

   コントローラやビジネスロジック、DAOはNexawebに依存せず、一般的なJavaによるWebアプリケーションと同じようにプログラミングを行う。一般的にWebアプリケーションを作成する際は、プレゼンテーション層ならば「Struts」、データアクセス層では「Hibernate」など、何かしらのフレームワークを利用する。今回はSpring Framework(以下、Spring)を利用しよう。

   SpringはDIコンテナとして有名だが、実はDIコンテナ以外にもデータアクセス層ならSpringJDBC、プレゼンテーション層にSpringMVCというように、すべての層をカバーするフレームワークでもある。今回はSpringについては詳しくは説明しない。すでに多くの書籍や記事が公開されていますので、そちらを参照してほしい。

DIxAOPコンテナ「Seasar2とSpring」
第1回:時代は今「DIxAOPコンテナ」

   ProductServiceにはすべての商品の一覧を取得する「findAllProduct」などのビジネスロジックを定義する(リスト2)。データベースへのデータアクセスを行う「ProductDao」はリスト3のように定義する。なお今回はSpringやWebアプリケーションの作成方法については詳しく解説しないので、両クラスとも商品の一覧を取得するメソッドしか定義しておらず、その実装も最低限の実装しか行っていない。

リスト2:ProductService
public interface ProductService {
   List<ProductTo> findAllProduct();

   boolean isStock(int id, int purchase);

   ProductTo findProduct(int id);
}

リスト3:ProductDao
public interface ProductDao {
   List<Product> findAllProduct();

   boolean isStock(int id, int purchase);
}

   ProductServiceやProductDaoはSpringのDIコンテナが管理するBeanとして定義し、トランザクション管理もSpringを利用する。それらのBeanを定義したファイル(Bean定義ファイル)を「WEB-INF/applicationContext.xml」として配置している。

リスト4:Bean定義ファイル
リスト4:OrderMco
(画像をクリックすると別ウィンドウに拡大図を表示します)

   少しBean定義ファイルについて説明しておこう。リスト4-(1)はインターフェース「ProductService」を実装したクラス「ProductServiceImpl」を定義している部分だ。リスト4-(2)のpropertyタグを用いて、リスト4-(3)で定義されている「ProductServiceImpl」が依存するデータアクセスを行うインターフェース「ProductDao」を実装したクラスのインスタンスをインジェクション(注入)している。

   そのほかにもBean定義ファイルには、トランザクション管理の定義やリスト4-(3)で定義したProductDaoを実装するクラス「ProductDaoImpl」が利用する、データベースへの接続情報などといったデータソースの定義などが記述されている。

前のページ  1  2   3  4  次のページ


株式会社チェンジビジョン 岩永 寿来
著者プロフィール
株式会社チェンジビジョン  岩永 寿来
モデリングツールJUDEを開発しているチェンジビジョンで、ソフトウェア開発プロジェクトの見える化を支援するTRICHORDを開発している。最近は2DやJOGLなど3D技術に興味があり、クールなUIやエフェクトを日々探求している。共著として「Spring入門(技術評論社)」、「Spring2.0入門(技術評論社)」。


株式会社豆蔵 長谷川 裕一
著者プロフィール
株式会社豆蔵  長谷川 裕一
XMLの技術開発やCORBA、EJBを使用したシステム開発などを経て、現在はアジャイル開発プロセスの導入から工学的なソフトウエアプロセスの策定、オープンソースプロダクトに関するコンサルタント、アーキテクトとして常に第一線で活躍。共著として「プログラムの育てかた 現場で使えるリファクタリング(ソフトバンク)」、「Spring入門(技術評論社)」。


INDEX
第4回:Format_サーバ側との連携を実現する
  サンプルから学ぶ、Nexawebの機能
サーバ側との連携
  NexawebとSpringとの連携
  どのようなビューを表示するかを定義する