同じようなウェブアプリケーションをSeasar2とEJB3.0で実装し、どちらが簡単にできるかを比較しました。結論から言うと、作成するクラスや設定ファイルの数はEJB3.0の方が少なく、短時間でアプリケーションを構築することができました。
ウェブアプリケーションの詳細
作成したウェブアプリケーションはひとつの画面から構成されます。顧客の姓名を入力し、システムに送信すると、顧客がデータベースに登録され、登録されている顧客が一覧されます。
データベースの設計
今回のアプリケーションのデータベース設計は下記の通りです。データベースサーバにはMySQLを利用しました。
CREATE TABLE customer ( id int(10) unsigned NOT NULL auto_increment, firstname varchar(20) NOT NULL default '', lastname varchar(20) NOT NULL default '', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Seasar2での実装
Seasar2で実装するにあたり、S2JSF Blank 1.0.14を利用しました。実装は、5つのパッケージから成る、合計3つのインターフェースと4つのクラスから構成されています。永続化層にはS2Daoを利用し、サービス層はPOJOで実装しています。ウェブ層はPOJOですが、S2JSFを意識した構成になっています。
S2JSF Blankに含まれている6つの設定ファイル(diconファイル)のうち、app.diconとj2ee.diconの2つを修正しました。app.diconではインターセプターの設定を追加し、j2ee.diconではデータソースの設定を変更しました。
詳細については、ソースコードを参照してください。
EJB3.0での実装
EJB3.0での実装にはSunで配布されているJava EE 5 SDKを利用しました。実装は、3つのパッケージから成る、1つのインターフェースと3つのクラスから構成されています。永続化層にはJava Persistence APIを利用し、サービス層の実装クラスはStateless SessionBeanとして実装しています。ウェブ層はJSFを利用しています。
設定ファイルは、3つ用意しました。データソースを指定するためのpersistence.xmlと、faces-config.xml、web.xmlです。
詳細については、ソースコードを参照してください。
比較
Seasar2を利用した実装はブランクアプリケーションから作成したため、簡単に構築することができました。ブランクアプリケーションには、多くの記述済み設定ファイルと依存ライブラリが含まれています。ですから、スクラッチからアプリケーションを組み立てるとなると、かなりの手間を覚悟する必要があるのではないかと思います。例えば、Mavenを利用したいという場合には、ブランクアプリケーションを利用することができません。
それに対して、EJB3.0を利用した実装は、Java EE 5の仕様の範囲内で作成しているので、アプリケーションサーバを除けば、特別に用意するものはありません。Seasar2を利用して実装したWARファイルが5.75MBなのに対して、EJB3.0を利用して実装したEARファイルは、たったの5KBです。

コメントする