連載第2回の「OSSのJavaバッチフレームワークでHello World!」では、オープンソースのJavaバッチフレームワークの1つである「TERASOLUNA Batch Framework for Java」(以下、TERAバッチ)のアーキテクチャと機能を簡単に紹介し、HelloWorld!アプリケーションの実装を通してTERAバッチの特徴とアプリケーション作成時に必要な作業を確認しました。
編集部注:「Batch Framework for Java」を含むTERASOLUNAフレームワーク全体について詳しく知りたい読者は、特集「Java、.NET、Ajax開発の“銀の弾丸”オープンソース?」をご覧ください。
今回はデータベース(以下、DB)を利用したバッチアプリケーションの実装を通して、前回は触れなかったTERAバッチの特徴や機能について紹介します。HelloWorld!から一歩進んでTERAバッチの実践的な利用方法を学んでいきましょう。
なお、2008年5月9日にTERAバッチのVer2.0.0.2がリリースされました。今回はVer2.0.0.2を基にアプリケーションの実装を行っていきます。
今回作成する、DBを利用したアプリケーションの仕様は以下のとおりとします。
1.入金テーブルから処理対象となるデータを読み込み、ビジネスロジックに渡す
表1 入金テーブルの形式 | ||||||||||||
|
2.渡された入力データの顧客IDにひも付く残高を、残高テーブルを基に算出し更新する。その際に、残高テーブルに入力データの顧客IDがない場合は新規に追加する
表2 残高テーブルの形式 | |||||||||
|
3.残高テーブルに対して更新した件数、新規に追加した件数をそれぞれコンソールに出力する
処理フローを図示すると、以下のとおりとなります。
また、処理前後でのテーブルの変化のイメージ、コンソール出力のイメージは以下のとおりです。
コンソール出力のイメージ |
…… |
では早速ですが、DBを利用したバッチアプリケーション作成の準備をしていきましょう。なお、開発環境の構築の際に必要となるEclipseやJDKのセットアップについては、前回の「OSSのJavaバッチフレームワークでHello World!」を参考にしてください。この説明では、Windows上での開発を想定しています。
SourceForgeのサイトから、今回のアプリケーション開発の基となるブランクプロジェクトをダウンロードします。こちらからZIPファイルをダウンロードし、Eclipseの「Workspace」フォルダ配下に展開してください。このブランクプロジェクトは、通常のブランクプロジェクトに今回利用するデータベースを追加したものです。
ブランクプロジェクトを、Eclipseにインポートします。Eclipseメニューの[ファイル]→[インポート]から、[インポート]ウィザードを開き、[一般]→[既存プロジェクトをワークスペースへ]から、[ルートディレクトリの選択]を選んで、[参照]ダイアログから、先ほど展開したブランクプロジェクトがあるWorkspaceフォルダを選択してください。プロジェクト欄に「terasoluna-batch-blank-foratmarkit03」があることを確認し、[終了]を押下します。
次に、接続するDB(純正JavaのDBであるHSQLDBを使う)の起動・確認をします。プロジェクトに入っている「hsqldb.zip」をデスクトップなど任意のフォルダにコピー・展開し、「(任意のフォルダ)\hsqldb\terasoluna\startDBManager.bat」を実行してDBを起動します。
続いて、正しく起動しているか確認します。「(任意のディレクトリ)\hsqldb\terasoluna\startDBManager.bat」を実行します。DBManagerが起動し、connect画面が表示されるので、以下のように入力します。
表3 入力パラメータと値 | ||||||||||
|
DBの接続後、画面左のテーブル一覧に以下があること、入金テーブル・残高テーブルの内容を確認します。
DBは起動したままにしておいてください。ここまでで、TERAバッチを利用したアプリケーションを開発するための準備完了です。
では、アプリケーションを作成していきましょう。TERAバッチで必要な実装については前回ご紹介しましたが、以下に再掲します。
表4 TERAバッチで必要なソースコード(再掲) | |||||||||||||||||||||||||||
|
また、プロジェクトのディレクトリ構成は前回を参考にしてください。
「ジョブBean定義ファイル」を格納するフォルダを作成します。Eclipseの[パッケージエクスプローラ]ビューで、「terasoluna-batch-blank-foratmarkit03\batchapps」フォルダを右クリックし、[新規]→[フォルダ]から「sample\UC0002」フォルダを作成してください。
ジョブBean定義ファイルを作成します。「batchapps\sample\UC0002」フォルダ配下に、「JB0001.xml」を作成し、以下のとおり入力します。
<?xml version="1.0" encoding="UTF-8" ?> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd"> |
ここまでは、前回と同様です。
「iBATIS定義ファイル」を作成します。iBATIS定義ファイルはデータベースを利用する際に必須となるファイルで「sqlMapファイル」「sqlMapConfigコンフィグファイル」の2つからなります。sqlMapファイルにはSQL文の定義を、sqlMapConfigファイルにはどのsqlMapファイルを利用するかについて、それぞれ記述します。
今回は「batchapps\sample\UC0002」フォルダ配下に、「UC0002_sqlMap.xml」「UC0002_sqlMapConfig.xml」をそれぞれ作成し、以下のとおり記述します。
UC0002_sqlMap.xml |
<?xml version="1.0" encoding="UTF-8"?> "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="UC0002"> </sqlMap> |
UC0002_sqlMapConfig.xml |
<?xml version="1.0" encoding="UTF-8" ?> PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <!-- Always ensure to use the correct XML header as above! --> <!-- iBatisの定義 -->
<sqlMapConfig> <settings useStatementNamespaces="true"/> <!-- サンプル用sqlMapの定義--> <sqlMap resource="sample/UC0002/UC0002_sqlMap.xml"/> </sqlMapConfig> |
次ページ以降では引き続き、実践的Javaバッチ・アプリケーションを作りこんでいきます。
Copyright © ITmedia, Inc. All Rights Reserved.