Db2 Warehouse on Cloudでテストコード用DBを作る


はじめに

  テストコードを流す時、ローカルにDBを作成する人も多いと思いますが、クラウド時代に使いこなしてるふりをするために、BluemixのDb2 Warehouse on Cloudを利用して実装してみました。

前提

  ある程度Mavenについて理解していること。EclipseでMavenシンプルプロジェクトを作成してあること。JPAを利用していること。Bluemixのアカウント持っていること。

ローカルの準備

1.Db2 on CloudのDriverダウンロードします。
2.Mavenプロジェクトにlibというフォルダを作成し,ダウンロードしたドライバをそのフォルダ配下に置きます

3.プロジェクトのDependencyに追加します。
4.Buildの手順を定義します。

pom.xmlに少なくとも以下のコードが必要です。

pom.xml

<!-- 手順3-->
<!-- DB2 on Cloud Driver-->
<dependencies> 
  <dependency>
    <groupId>com.ibm</groupId>
    <artifactId>db2jcc4</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/db2jcc4.jar</systemPath>
  </dependency>
</dependencies>

<!-- 手順4-->
<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
            <execution>
                <id>add-it-resources</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/it-classes</outputDirectory>
                  <resources>
                        <resource>
                            <directory>src/main/resources</directory>
                        </resource>
                        <resource>
                            <directory>src/it/resources</directory>
                        </resource>
                  </resources>
                </configuration>
            </execution>
        </executions>
      </plugin>

    </plugins>
</build>

Db2 Warehouse on Cloud準備

1.Db2 Warehouse on Cloudサービス作成

    カタログをクリックし、検索バーに「Db2 Warehouse on Cloud」を入力します。クリックし、作成します。

2.接続情報取得   

 1)右側の「サービス資格情報」をクリックします。

 2)「新規資格情報」をクリックします。

 3)「資格情報表示」をクリックすると接続情報が表示されます。

persistence.xml編集

  src/test/javaの配下に「META-INF」というフォルダーを作成に、中にpersistence.xmlファイルを作成します。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="TEST">
        <class>com.abc.entity.Tablename1</class>
        <class>com.abc.entity.Tablename2</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver"/>
            <property name="javax.persistence.jdbc.url" value="資格情報のjdbcurl"/>
            <property name="javax.persistence.jdbc.user" value="資格情報のuser"/>
            <property name="javax.persistence.jdbc.password" value="資格情報のpassword"/>
            <property name="javax.persistence.jdbc.Schema" value="schema名"/>

        </properties>  
    </persistence-unit>
</persistence>

やってみた感想

  テストコードを流すためにかかる時間が長いのは事実ですが、本番環境とほぼおなじ環境を作るためにもあり、今後CloudのDBを使いこなせるためにも、いい練習だと思います。