Spring Batch でスキーマを用いて起動する方法

Spring Batch でスキーマを用いて起動する方法

概要

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" />

batchカテゴリの最新記事