
最終回 流れるようにSQLっぽくO/RマッピングできるS2JDBC
株式会社パワーエッジ
新田 智啓(newta)
2008/3/18
■ どのようにトランザクションをしているのか?
通常ほとんど変更する必要はありませんが、ここではどのようなDIの設定になっているか見るために設定ファイルを見てみます。トランザクションの指定がされている設定ファイルは「customizer.dicon」で、以下のようになっています。
| customizer.dicon |
<components> |
ここで、連載で初めてSeasar 2の設定ファイルが出てきて驚いた読者もいるかと思います。Actionをトランザクションしている限り、このファイルも見る必要はありません。詳細な見方は、Seasar 2の公式ページのリファレンスを参照してください。今回はトランザクションの部分のみポイントを絞って説明します。
まず、重要なところは、componentで定義されているxxxxCustomizerです。xxxxの名前はそれぞれパッケージにも使われている名前ですね。formCustomizerやactionCustomizer、serviceCustomizerでそれぞれのクラスに動作を足しています(AOP)。formCustomizerは特に何も設定されていません。
次に、actionCustomizerで設定されているorg.seasar.framework.container.customizer.TxAttributeCustomizerが重要です。この設定がトランザクションの管理を行います。この設定を加えることでActionクラスのメソッドが呼ばれた時点でトランザクションを開始し、Exceptionがthrowされてそのメソッドが終了するとロールバック、正常終了するとコミットを行います。
serviceCustomizerでも同様の設定がされています。これは、どうなるのでしょうか? この場合、Actionでトランザクションが開始されている場合何もしません。トランザクションが開始されていなかった場合、ここでトランザクションが開始され同じような動きになります。
■ トランザクションの範囲をServiceのメソッド単位に変えると…
それでは、トランザクションの範囲をServiceのメソッド単位に変えてみます。addAspectCustomizerに設定されていた、以下の行を削除するだけです。
<initMethod name="addCustomizer"> |
これだけでトランザクションの範囲がServiceクラスのメソッド単位になりました。このように適応クラスを自由に変更でき、さらに、決めた後は設定ファイルにはまったく触る必要がなくトランザクション管理を行ってくれます。
また、設定ファイルで設定されたトランザクション以外にもアノテーションを利用してソース上でより柔軟にトランザクションを設定できます。
実はDoltengよりも良い?「S2JDBC-Gen」とは
実は筆者としては、データオブジェクトとサービスクラスについては、DoltengのScaffoldで生成されたソースよりも、ビルドツール「Ant」を使用してデータオブジェクトとサービスクラスを生成する「S2JDBC-Gen」を使った方が、より良いソースコードが生成されると考えています(連載開始時のDolteng 0.33.0バージョンと比較して)。
DoltengのScaffoldができた後も、Doltengは開発が続けられ、S2JDBC-Genも改良を繰り返しています。新しいDoltengで生成されたプロジェクトにはデフォルトのS2JDBC-Gen実行用のファイルも含まれています。
![]() |
| 図2 新しいDoltengで生成されたプロジェクトにはデフォルトのS2JDBC-Gen実行用のファイルも含まれている |
現時点では、データオブジェクトとサービスクラスはS2JDBC-Genで一括生成し、ActionとActionFormのクラスは必要な部分のみScaffoldで生成して必要な改修を加えていく方法が一番いいかもしれません。使うときにどちらの方がいいか試してみて決めるのがいいでしょう。両方を実行するのには5分もかかりません。
S2JDBC-Genについては、また別の機会に紹介したいと思います。気になる方は公式ページを参照してください。
Seasar 2.4で、あなたも超俊敏なWebアプリ開発を
これで、S2JDBCの基本的な利用方法が一通りできると思いますが、いかがでしたでしょうか。S2JDBCの便利さを実感いただけたかと思います。
今回で本連載は終了です。これまでに連載した内容で、簡単ではありますがSAStrutsを中心としたSeasar 2.4の基本的な利用方法を解説してきました。より詳しい利用方法については各プロダクトの公式ページを利用するとよいと思います。
SAStrutsを利用して、どんどん新しいWebアプリケーションの開発を行ってみてはいかがでしょうか。
■ 参考資料
■ @IT関連記事
| オブジェクトで通信するAMFとS2JDBCによるDB接続 業務用RIAの本命!? Flex+Java開発入門(4) Flex+Java開発においてS2BlazeDSを使うと、AMFを使った通信が使え、S2JDBCによる簡単なDB接続で生産性が上がります 「リッチクライアント & 帳票」フォーラム 2008/8/22 |
||
| Java開発者のためのFAQ集 Java開発者が 最低限押さえておくべきJavaに関する基礎知識、実際のソリューション構築の場面で定石とされるノウハウ、プログラミングTIPSなどのFAQをご紹介していきます。 JDBCの基礎知識と活用編 |
||
| Javaデータアクセスの基礎 Javaからデータベースにアクセスする際の定番ミドルウェア「JDBC」を使ったデータアクセスを理解しよう |
||
| SeasarV2によるDBアクセス機能 Seasar Projectの全貌を探る(3) 今回はS2でDBアクセスするための手順を紹介することで、S2のDI+AOP技術がDBアクセスにおいてどう活かされているかを理解いただこう 「Java
Solution」フォーラム 2005/9/3 |
||
| SeasarのO/RマッピングツールS2Dao Seasar Projectの全貌を探る(5) SeasarV2のプロダクトにはO/Rマッピングツールも用意されている。XMLの設定などユニークな特長を持つS2Daoを紹介する 「Java
Solution」フォーラム 2005/12/23 |
||
| SeasarのDBアクセスにHibernateを使う Seasar Projectの全貌を探る(6) SeasarV2のプロダクトにはHibernateを使ったDBアクセスを実現するS2Hibernateが用意されている 「Java
Solution」フォーラム 2006/1/19 |
||
| Webアプリの常識をJSPとStrutsで身につける JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です。初心者・中堅・ベテランも大歓迎! |
||
| 筆者プロフィール |
| 新田 智啓(しんでん ともひろ) 所属: 株式会社パワーエッジ AD事業部(Application Development事業部) SAStrutsコミッタ Seasarプロダクトのsandboxで新たにS2Csvのプロダクトを公開。業務で汎用的に使えるように更新中。 著者ブログ(newta) |
| Index | ||||||||
|
||||||||
Java初心者が超俊敏にWebアプリを作る方法 バックナンバー 連載インデックスへ»
- 第1回 1分でWebアプリを作れるEclipseプラグイン「Dolteng」
- 第2回 StrutsのXML地獄から開発者を解放するSAStruts
- 第3回 サーバ再起動不要のSMART deployとバリデーション
- 第4回 EL式を拡張したSAStrutsタグ/ファンクションは超便利
- 最終回 流れるようにSQLっぽくO/RマッピングできるS2JDBC
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


