---DBアクセスJavaバッチ開発生産性向上---
近年来Javaによるバッチ処理が注目されてきており、商用やオープンソースのJavaバッチ処理用のソフトウェアが登場しつつある。特にDBアクセスをメインとするJavaバッチは、O/RマッピングツールとしてMyBatis(旧iBatis)を利用することで、CRUD部品の自動生成、柔軟なSQL記述を行いつつ、JavaBeanへのマッピング処理を簡略化しています。 それでいて、高い性能と品質、開発期間短縮とコスト削減がより求められる現状は、Javaを使おうと従来通りであり、開発者は対応に苦慮しています。 そのような悩みに応えるJavaバッチシステム開発自動化ツールが「Hakkobun」(はっこうぶん)(Java開発支援チール)です。コード自動生成機能を軸に、高い性能と品質を備えたJavaバッチプログラムが、短期間で効率よく開発できます。 特徴: 1.使い慣れたEclipseのプラグインとしてとして動作 2.中流工程の開発期間・コストを半減
EclipseにJavaバッチのプロジェクトを準備では早速ですが、DBを利用したバッチアプリケーション作成の準備をしていきましょう。なお、開発環境の構築の際に必要となるEclipseやJDKのセットアップについては、割愛します。 プラグインの導入jp.btsol.products.hakkobun.plugins.batch_1.0.0.201308041813.jar jp.btsol.products.hakkobun.plugins.mybatis_1.0.0.201308041813.jar jp.btsol.products.hakkobun.plugins.utils_1.0.0.201308041813.jar ※バージョン番号と日付は、変わる可能性がある バッチプロジェクトの作成Eclipseを起動して、Ctrl+N(ファイル>新規>その他...)で新規ウィザードを起動します。 Hakkobun Templates配下にあるHakkobun Batch Projectを選択し、「次へ」ボタンをクリックします。新規Hakkobunバッチプロジェクトウィザードページが表示されます。
プロジェクト名に”first”を入力し、それ以外は、デフォルトままで、「完了」ボタンをクリックします。 生成されたプロジェクトは以下のようです。 Empは、確認のため、あらかじめ用意してあるEntityです。 ※プロジェクト名はパッケージになります。jp.btsol.batchような名前も入力できます。最後の単語は、バッチ処理メインクラスの名前とします。 次に、DB(MySQL)接続情報を確認します。/first/src/main/resources/config.propertiesファイルを開いて、下記の内容を確認します。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/jpetstore
jdbc.username=root
jdbc.password=admin
必要に応じて、値を修正してください。 テスト用テーブルとデータの作成CREATE TABLE EMP (
EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MANAGER NUMERIC(4),
HIREDATE DATE,
SALARY NUMERIC(7,2),
COMMISSION NUMERIC(7,2),
DEPTNO NUMERIC(2) NOT NULL,
CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
);
insert into emp ( empno, ename, job, manager, hiredate, salary, commission, deptno) values ( 1001, 'Yamata', 'Manger', 2001, '2001/01/01', 90000, 3000, 2);
単体テストの実施/first/src/test/java/first/mapper/EmpMapperTest.java と /first/src/test/java/first/FirstTest.java の単体テストを実行し、問題ない事を確認できます。
Hakkobunテーブルアクセス部品の作成開始!
コーディングレスで対象テーブルアクセルCRUD部品を作成Ctrl+N(ファイル>新規>その他...)で新規ウィザードを開きます。 Hakkobun Templates配下にあるMyBatis SQL Mapperを選択し、「次へ」ボタンをクリックします。下記のフォルダー、パッケージ指定ページが表示されます。 ソースフォルダー、テストフォルダー、パッケージ名を指定します。 フォルダー、パッケージの入力は、「参照」ボタンで選択できます。 フォルダーの選択ダイアログ: 入力完了のイメージ: 入力を完了したら、「次へ」ボタンをクリックします。テーブル選択ページまで進みます。 対象テーブル、マッパータイプ(CRUD)をチェックし、「完了」ボタンをクリックします。 ※複数テーブル、複数マッパータイプを一括作成できます。既に作成してある場合は、確認の上「既存のマッパーファイルを上書き」のチェックボックスをチェックしてください。 テーブルにプライマリーキーを定義されていない場合は、選択用項目選択ダイアログが表示されます。
※プライマリーキーの定義があるまたは選択用項目を選択した場合は、プライマリーキーよりEntityの取得、更新、削除メソッドが生成されます。 選択用項目(プライマリーキーを含む)がない場合は、自動生成した取得、更新、削除SQLは、テーブルデータ全件対象とします。 useridを選択用項目としする場合は、 生成されたマッパーファイル: マッパー
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
< mapper namespace = "first.mapper.AccountMapper" >
< insert id = "insert" parameterType = "first.entity.Account" >
insert into account (
userid ,
email,
firstname ,
lastname ,
status,
addr1,
addr2,
city,
state,
zip ,
country,
phone
)
values (
#{ userid },
#{email},
#{ firstname },
#{ lastname },
#{status},
#{addr1},
#{addr2},
#{city},
#{state},
#{ zip },
#{country},
#{phone}
)
</ insert >
< select id = "getAccount" resultType = "first.entity.Account" >
select
userid , email, firstname , lastname , status, addr1, addr2, city, state, zip , country, phone from account
where
userid = #{ userid } order by
userid </ select >
< select id = "all" resultType = "first.entity.Account" >
select
userid , email, firstname , lastname , status, addr1, addr2, city, state, zip , country, phone from account
order by
userid </ select >
< update id = "updateAccount" parameterType = "first.entity.Account" >
update account set
userid = #{ userid }, email = #{email}, firstname = #{ firstname }, lastname = #{ lastname }, status = #{status}, addr1 = #{addr1}, addr2 = #{addr2}, city = #{city}, state = #{state}, zip = #{ zip }, country = #{country}, phone = #{phone} where
userid = #{ userid } </ update >
< delete id = "deleteAccount" >
delete from account
where
userid = #{ userid } </ delete >
</ mapper >
単体テストソースの修正(テンプレータイズの威力)あれ、テストケースにコンパイルエラーがあるじゃないですか? これじゃコンパイルできないじゃ!Velocityの変数定義が足りてないじゃないの? 魔法の杖で変身! メニューのHakkobun>Templatizeを選択します。 TABキーで編集変数の間に自由に移動したり、編集したりできます。長々便利でしょうか。 単体テストの実施早速単体テストを実施してみましょう。 テーブルを作成します。 CREATE TABLE DEPT ( DEPTNO decimal(2,0) NOT NULL, DNAME varchar(14) DEFAULT NULL, LOC varchar(13) DEFAULT NULL, PRIMARY KEY (DEPTNO) ); データがないのままで、/first/src/test/java/first/mapper/DEPTMapperTest.javaをJUnit Testとして実行したら、下記の結果になります。 JUnit Testが成功させるように、好きなように修正してください。 ※デフォルトは、tearDown()メソッドのsession.commit();がコメントアウトされています。 次回の予定:Excelテスト仕様書ベースに、テストケースの作成を行いたいです。ご期待ください。
1.バッチプロジェクトを作成されて、下記のエラーが出る場合の対処方法を説明します。 対処方法: 1.1 Mavenをダウンロード、解凍します。。 1.2 EclipseにMavenのディレクトリーを指定します。 ・Window>Preferences>Maven>Installations ・Add… でMavenを追加します。 1.3 プロジェクトエクスプローラーからプロジェクトを右クリックし、Maven>Update Project...します。 で、問題解消されます。 2.テーブル一覧に何も表示されない データベースのアクセス権限を確認してください。
|
|