SAStruts での利用

SAStruts のブランクを利用して、Maven DBFlute Plugin を用いた開発の流れを説明します。

利用する前に(事前準備)

ここでの説明を進める上で、Maven 2 のインストールをしておく必要があります。 (Maven 2.0.10 で動作確認をしています)

SAStruts プロジェクトの作成

SAStruts のプロジェクトを Maven Archetype を利用して作成します。 SAStruts の Maven Archetype の詳しい情報については、Maven Archetype をご覧ください。

プロジェクトを archetype:generate ゴールを実行することでプロジェクトを生成します。

      
mvn archetype:generate -DarchetypeRepository=https://www.seasar.org/maven/maven2/ \
    -DarchetypeGroupId=org.seasar.sastruts \
    -DarchetypeArtifactId=sa-struts-archetype -DarchetypeVersion=1.0.4-sp7 \
    -DgroupId=sample.app -DartifactId=sample -Dversion=0.1.0 \
    -Duse-dbflute=true -Ddbflute-version=0.9.6.1 -Ddbflute-plugin-version=0.3.0
cd sample
      
    

上記を実行すると、DBFlute が利用可能な SAStruts の Maven プロジェクトが sample ディレクトリに生成されます。 生成されるプロジェクトの groupId が sample.app、artifactId が sample、version が 0.1.0 です。 利用する DBFlute のバージョンが 0.9.6.1、Maven DBFlute Plugin のバージョンが 0.3.0 になります。

mvn eclipse:eclipse の実行

Eclipse で読み込めるようにします。

      
mvn eclipse:eclipse
      
    

実行することにより、src/main/webapp/WEB-INF/lib/ が更新されます。

データベースの作成

今回は H2 を利用します。 別なデータベースを利用する場合は、この部分をスキップしてください。

      
mkdir src\main\webapp\WEB-INF\db
cd src\main\webapp\WEB-INF\db
java -jar ..\lib\h2-1.2.124.jar
      
    

ブラウザが開き、http://localhost:8082/ が表示されます。 表示されない場合は、その URL を表示してください。

JDBC URL を jdbc:h2:sample として、接続します。 今回は以下の単純なテーブルを作成します。

      
CREATE TABLE TEST_TABLE (
    ID    BIGINT NOT NULL IDENTITY PRIMARY KEY,
    NAME  VARCHAR(255),
    VALUE INT
);
      
    

作成できたら、H2 を終了します。 ブラウザを閉じても H2 は終了しないので、タスクトレイにあるアイコンから終了を選択してください。 プロジェクトのトップディレクトリに戻ります。

      
cd ..\..\..\..\..\
      
    

データベースの設定情報については pom.xml の以下の箇所に記述されています。

      
<plugin>
  <groupId>org.seasar.dbflute</groupId>
  <artifactId>maven-dbflute-plugin</artifactId>
  <version>0.3.0</version>
  <configuration>
    <dbfluteVersion>0.9.6.1</dbfluteVersion>
    <rootPackage>sample.app</rootPackage>
    <dbPackage>sample.app.db</dbPackage>
    <schemaName>sample</schemaName>
    <schemaFile>${basedir}/dbflute/schema/project-schema-sample.xml</schemaFile>
  </configuration>
</plugin>
      
    

たとえば、MySQL を利用する場合は以下のような情報を configuration 要素以下に記述します。

      
<database>mysql</database>
<databaseDriver>com.mysql.jdbc.Driver</databaseDriver>
<databaseUrl>jdbc:mysql://localhost/sample?useUnicode=true&amp;amp;characterEncoding=UTF-8</databaseUrl>
<databaseUser>username</databaseUser>
<databasePassword>password</databasePassword>
      
    

DBFlute のダウンロード

mvn dbflute:download を実行して、DBFlute のダウンロードします。 DBFlute のバージョンは pom.xml に記述した dbfluteVersion になります。

      
mvn dbflute:download
      
    

mydbflute/dbflute-[バージョン] が作成され、そこに DBFlute が展開されます。

0.9.4.1 以前のバージョンを利用していて、Unix 系 OS を利用している場合は、ant の実行権を設定する必要があります。

      
chmod +x mydbflute/dbflute-[バージョン]/ant/bin/ant
      
    

DBFlute クライアントの生成

mvn dbflute:create-client を実行して、DBFlute クライアントを生成します。 実行すると、mydbflute/dbflute-[バージョン]/etc/client-template/dbflute_dfclient.zip を dbflute_sample ディレクトリに展開して、pom.xml に記述したパラメータを DBFlute クライアントに反映します。

      
mvn dbflute:create-client
      
    

スキーマ情報の取得

mvn dbflute:jdbc を実行して、データベースのスキーマ情報を取得します。 実行すると、dbflute ディレクトリの jdbc.[sh|bat] が実行されます。

      
mvn dbflute:jdbc
      
    

クラスファイルの生成

mvn dbflute:generate を実行して、データベースにアクセスする DBFlute のクラスを自動生成します。 実行すると、dbflute ディレクトリの generate.[sh|bat] が実行されます。

      
mvn dbflute:generate
      
    

dicon の更新

データベースの情報を設定します。 src/main/resources/jdbc.dicon を以下のように編集します。

      
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">
<components namespace="jdbc">
    <include path="jta.dicon"/>

    <!-- for H2 -->
    <component name="xaDataSource"
        class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
        <property name="driverClassName">
            "org.h2.Driver"
        </property>
        <property name="URL">
            "jdbc:h2:file:"
                + container.getComponent(@java.lang.Class@forName("javax.servlet.ServletContext")).getRealPath("/WEB-INF/db/sample")
        </property>
        <property name="user">"sa"</property>
        <property name="password"></property>
    </component>

    <component name="connectionPool"
        class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
        <property name="timeout">600</property>
        <property name="maxPoolSize">10</property>
        <property name="allowLocalTx">true</property>
        <destroyMethod name="close"/>
    </component>

    <component name="DataSource"
        class="org.seasar.extension.dbcp.impl.DataSourceImpl"
    />

</components>
      
    

準備完了

以上で DBFlute を用いて、データベースにアクセスすることができるようになります。 Eclipse に Tomcat プラグインがインストールしてあれば、読み込んだプロジェクトを Tomcat プラグインで「Update context definition」して、Tomcat を起動すると http://localhost:8080/sample でアクセスすることができます。 あとは、必要なウェブページなどを SAStruts で作成してください。

SAStruts のページの自動生成

Maven DBFlute Plugin では、各テーブルに関する SAStruts 用のページを自動生成することができます。 自動生成する場合は、以下の手順で実行してください。

クラスファイルとJSPの生成

mvn dbflute:generate-crud を実行して、クラスファイルと JSP を自動生成します。

      
mvn dbflute:generate-crud
      
    

メニューページを作成したい場合は dbflute:generate-crud の実行前に src/main/webapp/WEB-INF/view/index.jsp を削除してください。

dicon の更新

生成したファイルでページング処理を行うために dicon を更新します。

dicon に PagerCreator を追加します。 src/main/resources/creator.dicon を以下のように編集します。 パッケージ名をカスタマイズしている場合は併せて変更してください。

      
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="convention.dicon"/>
    <include path="customizer.dicon"/>

    <component class="org.seasar.framework.container.creator.ActionCreator"/>
    <component class="org.seasar.struts.creator.FormCreator"/>
    <component class="org.seasar.framework.container.creator.ServiceCreator"/>
    <component class="org.seasar.framework.container.creator.DtoCreator"/>
    <component class="org.seasar.framework.container.creator.InterceptorCreator"/>

    <component class="sample.app.crud.creator.PagerCreator"/>

</components>
      
    

pagerCustomizer を追加します。 src/main/resources/customizer.dicon を以下のように編集します。

      
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="default-customizer.dicon"/>

    <component name="actionCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
        <initMethod name="addAspectCustomizer">
            <arg>"aop.traceInterceptor"</arg>
        </initMethod>
        <initMethod name="addAspectCustomizer">
            <arg>"actionMessagesThrowsInterceptor"</arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
            </arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.struts.customizer.ActionCustomizer"/>
            </arg>
        </initMethod>
    </component>

    <component name="formCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
    </component>

    <component name="serviceCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
        <initMethod name="addAspectCustomizer">
            <arg>"aop.traceInterceptor"</arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
            </arg>
        </initMethod>
    </component>

    <component name="pagerCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
    </component>

</components>
      
    

配備

プロジェクトを Clean して、再度ビルドしてください。 Tomcat を再起動後、http://localhost:8080/sample/testTable にアクセスして、表示されることを確認してください。

Document

Topics