|
||||||||||||||||||
| 1 2 3 4 次のページ | ||||||||||||||||||
| はじめに | ||||||||||||||||||
|
前回、AADL1に準拠した「従業員管理Webアプリケーション」にインターフェースを導入しましたが、まだコンポーネント間が完全に疎結合になっていないため、Seasar2とSpringを導入して解決するというところまで話が進みました。 今回は問題の解決に先立ち、Seasar2とSpringの概要を解説し、皆さんのマシンにSeasar2とSpring、そしてサンプルアプリケーションである従業員管理システムを導入するところまでを解説します。 なお、本連載ではWebコンテナにTomcat、RDBMSにHSQLDB、IDE(統合開発環境)にはEclipseといった、ここ1〜2年のJ2EEを利用したWebアプリケーション開発の定番の組み合わせを開発環境として使用します(表1)。TomcatやEclipseなどの導入方法については様々な書籍やWebサイトが存在していますので本連載では記述しません。その点をご了承ください。 |
||||||||||||||||||
表1:開発環境 |
||||||||||||||||||
| Seasar2の概要 | ||||||||||||||||||
|
Seasar2はNPO(2005/10/14現在法人認可申請中)であるSeasarファウンデーションにより開発/管理されているJava/J2EEのフレームワークであり、ひがやすを氏がチーフコミッタ(開発者)を務めています。 本連載では最新版である2.2.10(2005/10/14現在)のバージョンをもとに説明を行いますが、コンポーネントの自動登録やアノテーションなどの拡張を加えた次期バージョン候補の2.3RC1も公開されています。 Seasar2は、DIxAOPコンテナの機能を実現するS2コアと呼ばれる部分に基本的な機能が実装されています。基本機能にはDIやAOPはもちろん、トランザクション制御、JDBC連携の機能などが含まれます。 S2プロダクトと呼ばれるプロジェクトでは、DIxAOPコンテナの機能を利用して、各種のフレームワーク(表2)と連携を行い、その利用方法を簡易化するための機能が提供されており、それぞれの分野で成長したSeasar2以外のフレームワークを開発者の状況に合わせて利用しやすくします(図1)。 |
||||||||||||||||||
表2:フレームワーク連携を行うプロダクト例 |
||||||||||||||||||
| Seasar2としてすべてのフレームワークを用意する必要がないことは、Seasar2がDIxAOPコンテナ本来の強化に努めることができる利点もあります。 また、Seasar2にはSandBoxと呼ばれる開発初期のプロダクトも多く存在します。開発に関与するコミッタの多寡や熱意により、作成されるプロダクトの品質や開発スピードに差は生じますが、おおむね活発な活動がなされています。最近では、".NET"や"PHP"用のDIxAOPコンテナ開発にも力を入れています(表3)。 |
||||||||||||||||||
表3:.NET/PHPプロダクト |
||||||||||||||||||
| Seasar2のDI・AOP以外の機能 | ||||||||||||||||||
|
本連載を通してDIとAOPについては解説しますので、今回はSeasar2のDIとAOP以外の機能について、いくつか紹介します。 |
||||||||||||||||||
| JSF連携(S2JSF) | ||||||||||||||||||
|
JSFとの連携はS2JSFプロダクトにより実現されます。 S2JSFの大きな特徴は、ユーザとの画面定義を行う際によく利用されるHTMLで作成した画面のモックをJSFに変換することができることです。HTMLで作成した画面をJSFに変換するため、JSFを作成する時に必要だと考えられる特別なGUIエディタも必要がなく、画面はHTMLとして確認できるため、レイアウト確認のためにアプリケーションサーバを立ち上げるなどの手間をかける必要もありません。 またリクエストやセッションの属性はDIxAOPコンテナの機能を利用して必要なクラスのプロパティに自動的に設定されるため、通常であればJSFのAPIを利用しなければならないクラスを、JSFに依存しないPOJOとして作成することができます。 |
||||||||||||||||||
| Struts連携(S2Struts) | ||||||||||||||||||
|
Strutsとの連携はS2Strutsプロダクトにより実現されます。 StrutsのActionクラスにDIxAOPコンテナの機能を利用して次に呼び出すべきサービスコンポーネントを自動的に設定するため、Actionクラスは設定されたサービスコンポーネントを呼び出すだけになり、コントローラとしての役割が明確になります。また、Actionクラスに対してAOPを適用することも可能になります。 本連載のサンプルアプリケーション「従業員管理Webアプリケーション(Seasar2版)」ではStrutsをプレゼンテーションに使用しているため、S2Strutsを利用しています。 |
||||||||||||||||||
| JDBC連携(S2JDBC) | ||||||||||||||||||
|
JDBCとの連携はS2コアに含まれています。 JDBC連携用に用意されたコンポーネントに対してDIxAOPコンテナの機能を利用して、定義ファイルでSQL文("SELECT * FROM xxx"など)を設定し、実行することができます。 開発者は個別にJDBCアクセス用のコンポーネントを用意することなく、DBアクセスを実現します。 |
||||||||||||||||||
| O/Rマッピング(S2Dao) | ||||||||||||||||||
|
O/RマッピングはS2Daoプロダクトにより実現されます。 S2Daoで必要となるクラスはテーブルから取得した値を格納するJavaBeansとDAO(Data Access Object)、そして必須ではありませんがSQLが記述された外部ファイルです。 最近ではXMLを利用してオブジェクトとテーブルをマッピングするフレームワークが多いのですが、S2DaoはXMLを記述することなく、Beanにテーブルのカラムとのマッピングをメタデータとして記述することでSQL文を記述することなくO/Rマッピングが行えます。 Beanとは別に外部ファイル(SQLファイル)を作成することにより、DAOからSQL文を利用することも可能です。 本連載のサンプルアプリケーション「従業員管理Webアプリケーション(Seasar2版)」ではSeasar2のS2Daoを使用してRDBにアクセスしています。 |
||||||||||||||||||
| Hibernate連携(S2Hibernate) | ||||||||||||||||||
|
Hibernateとの連携はS2Hibernateプロダクトにより実現されます。 Seasar2のトランザクション管理機能とHibernateを連携させることで、Hibernateがテーブルにアクセスする際に必要とする煩雑な処理をソースコードに記述する必要がなくなり、また宣言的なトランザクション管理を利用することができます。これにより、コーディングの負担が軽減され開発効率があがります。 |
||||||||||||||||||
|
1 2 3 4 次のページ |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||



