概要
Spring Batch でDB2を用いて起動する方法
Spring batchでDBを使用する時、設定はXMLで行われる。
postgresqlで接続するときを例にすると、以下のようになる。
(Spring batch自身がDBを動かすためのDB設定と、起動されるバッチ処理(子プロセス)がDBを動かすための設定の二つが存在する。)
<!-- framework definitions --> <bean id="adminDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="org.postgresql.Driver" p:url="jdbc:postgresql://XXX.XXX.XXX.XXX:XXXX/DBNAME" p:username="username" p:password="password" /> <!-- Job-common definitions --> <bean id="jobDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="org.postgresql.Driver" p:url="jdbc:postgresql://XXX.XXX.XXX.XXX:XXXX/DBNAME" p:username="username" p:password="password" />
oracleDBやスキーマの定義されていないpostgresqlでは上記の設定で問題ないが、
スキーマ定義が分かれているpostgresqlやDB2に関してはスキーマまで指定しないといけないためSpring batch起動の際にエラーが発生する。
接続方法
DB接続URLに基準となる対象のスキーマ(currentSchema)を指定する。
以下はDB2のスキーマ指定の例
<!-- framework definitions --> <bean id="adminDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="com.ibm.db2.jcc.DB2Driver" p:url="jdbc:db2://XXX.XXX.XXX.XXX:XXXX/DBNAME:currentSchema=defaultSchema;" p:username="username" p:password="password" /> <!-- Job-common definitions --> <bean id="jobDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="com.ibm.db2.jcc.DB2Driver" p:url="jdbc:db2://XXX.XXX.XXX.XXX:XXXX/DBNAME:currentSchema=defaultSchema;" p:username="username" p:password="password" />