
Eclipseで作る! DBを使った実践的なJavaバッチ
株式会社NTTデータ 技術開発本部 ソフトウェア工学推進センタ
倉元 貴一
2008/6/6
今回はデータベースを利用した実践的アプリケーション
| 今回の主な内容 ・EclipseにJavaバッチのプロジェクトを準備 ・TERAバッチ・アプリケーションの作成開始! ・対象データ取得処理はコーディングレスです ・SpringのDIを使ったビジネスロジックの実装 ・前準備・後始末を忘れずに ・Eclipse上で実際に動作確認してみよう ・TERAバッチは標準的なオープンソースの 組み合わせ |
連載第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を基にアプリケーションの実装を行っていきます。
■ 今回作成するJavaバッチ・アプリケーションの仕様
今回作成する、DBを利用したアプリケーションの仕様は以下のとおりとします。
- 入金テーブルから処理対象となるデータを読み込み、ビジネスロジックに渡す
表1 入金テーブルの形式 フィールド名 データ型 サイズ ID 数値 - 顧客ID 文字列 20 入金金額 整数値 - - 渡された入力データの顧客IDにひも付く残高を、残高テーブルを基に算出し更新する。その際に、残高テーブルに入力データの顧客IDがない場合は新規に追加する
表2 残高テーブルの形式 フィールド名 データ型 サイズ 顧客ID 文字列 20 残高金額 整数値 - - 残高テーブルに対して更新した件数、新規に追加した件数をそれぞれコンソールに出力する
処理フローを図示すると、以下のとおりとなります。
![]() |
| 図1 今回のアプリケーションの仕様概要 |
また、処理前後でのテーブルの変化のイメージ、コンソール出力のイメージは以下のとおりです。
![]() |
| 図2 処理前後でのテーブルの変化のイメージ |
コンソール出力のイメージ |
…… |
EclipseにJavaバッチのプロジェクトを準備
では早速ですが、DBを利用したバッチアプリケーション作成の準備をしていきましょう。なお、開発環境の構築の際に必要となるEclipseやJDKのセットアップについては、前回の「OSSのJavaバッチフレームワークでHello World!」を参考にしてください。この説明では、Windows上での開発を想定しています。
■ プロジェクトのインポート
SourceForgeのサイトから、今回のアプリケーション開発の基となるブランクプロジェクトをダウンロードします。こちらからZIPファイルをダウンロードし、Eclipseの「Workspace」フォルダ配下に展開してください。このブランクプロジェクトは、通常のブランクプロジェクトに今回利用するデータベースを追加したものです。
ブランクプロジェクトを、Eclipseにインポートします。Eclipseメニューの[ファイル]→[インポート]から、[インポート]ウィザードを開き、[一般]→[既存プロジェクトをワークスペースへ]から、[ルートディレクトリの選択]を選んで、[参照]ダイアログから、先ほど展開したブランクプロジェクトがあるWorkspaceフォルダを選択してください。プロジェクト欄に「terasoluna-batch-blank-foratmarkit03」があることを確認し、[終了]を押下します。
■ 接続するDBの起動・確認
次に、接続するDB(純正JavaのDBであるHSQLDBを使う)の起動・確認をします。プロジェクトに入っている「hsqldb.zip」をデスクトップなど任意のフォルダにコピー・展開し、「(任意のフォルダ)\hsqldb\terasoluna\startDBManager.bat」を実行してDBを起動します。
続いて、正しく起動しているか確認します。「(任意のディレクトリ)\hsqldb\terasoluna\startDBManager.bat」を実行します。DBManagerが起動し、connect画面が表示されるので、以下のように入力します。
| 表3 入力パラメータと値 | ||||||||||
|
DBの接続後、画面左のテーブル一覧に以下があること、入金テーブル・残高テーブルの内容を確認します。
- テーブル"NYUKINTABLE"カラム"ID"、"KOKYAKUID"、"NYUKIN"
- テーブル"ZANDAKATABLE”、カラム"KOKYAKUID"、"ZANDAKA"
![]() |
| 図3 処理前の残高テーブルの確認例 |
DBは起動したままにしておいてください。ここまでで、TERAバッチを利用したアプリケーションを開発するための準備完了です。
TERAバッチ・アプリケーションの作成開始!
では、アプリケーションを作成していきましょう。TERAバッチで必要な実装については前回ご紹介しましたが、以下に再掲します。
| 表4 TERAバッチで必要なソースコード(再掲) | |||||||||||||||||||||||||||
|
また、プロジェクトのディレクトリ構成は前回を参考にしてください。
■ ジョブBean定義ファイルの作成
「ジョブ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定義ファイル」を作成します。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バッチ・アプリケーションを作りこんでいきます。
| Index | ||||||||
|
||||||||
Javaバッチ処理は本当に業務で“使える”の? バックナンバー 連載インデックスへ»
- 第1回 鉄板焼きのお店から学ぶ、バッチ処理“超”入門
- 第2回 OSSのJavaバッチフレームワークでHello World!
- 第3回 Eclipseで作る! DBを使った実践的なJavaバッチ
- 最終回 Javaバッチフレームワークで多重実行、非同期実行
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



