This is a cache of http://dbflute.seasar.org/maven/plugin/ja/sastruts.html. It is a snapshot of the page at 2024-09-18T00:59:30.743+0000.
SAStruts での利用

SAStruts での229;u28;

Maven ̉2;229;u28;して SAStruts のプロジェクト̉2;作210;して、DBFlute Maven Plugin ̉2;u28;いた開発の流れ̉2;説明します̀2;

229;u28;する24d;に(事24d;準備)

ここでの説明̉2;ः2;める上で、Maven 2 または 3 のインストール̉2;しておく必要が̄2;ります̀2;

SAStruts プロジェクトの作210;

SAStruts では Maven Archetype ̉2;提供しています̀2; Archetype ̉2;u28;いることで、mvn コマンド̉2;229;u28;して、SAStruts のプロジェクト̉2;作210;することができます̀2; 詳しくは、SAStruts の Maven Archetypẻ22;照してください̀2;

プロジェクトの作210;は archetype:generate ゴール̉2;実行します̀2; たとえば、以下のように実行します̀2;

$ mvn archetype:generate -DarchetypeRepository=http://maven.seasar.org/maven2/ \
    -DarchetypeGroupId=org.seasar.sastruts \
    -DarchetypeArtifactId=sa-struts-archetype -DarchetypeVersion=1.0.4-sp9.1 \
    -DgroupId=org.example -DartifactId=sample -Dversion=1.0.0-SNAPSHOT \
    -Duse-dbflute=true

実行すると、確認̉22;める Y が表示されるのでパラメータが問題なければ Y ̉2;入29b;します̀2; BUILD SUCCESS になると、artifactId で指定したディレクトリにプロジェクトが生210;されます̀2;

$ cd sample/
$ find . -type f
./pom.xml
./src/main/java/org/example/action/IndexAction.java
./src/main/webapp/WEB-INF/web.xml
./src/main/webapp/WEB-INF/view/index.jsp
./src/main/webapp/WEB-INF/view/common/footer.jsp
./src/main/webapp/WEB-INF/view/common/header.jsp
./src/main/webapp/WEB-INF/view/common/menu.jsp
./src/main/webapp/WEB-INF/view/common/common.jsp
./src/main/webapp/WEB-INF/view/common/layout.jsp
./src/main/webapp/WEB-INF/struts-config.xml
./src/main/webapp/WEB-INF/validator-rules.xml
./src/main/resources/s2container.dicon
./src/main/resources/env.txt
./src/main/resources/customizer.dicon
./src/main/resources/application.properties
./src/main/resources/application_ja.properties
./src/main/resources/s2jdbc.dicon
./src/main/resources/jdbc.dicon
./src/main/resources/app.dicon
./src/main/resources/env_ut.txt
./src/main/resources/creator.dicon
./src/main/resources/convention.dicon
./src/main/resources/log4j.properties
./.settings/net.sf.amateras.sastruts.prefs
./.tomcatplugin
./.amateras

必要に応じて、pom.xml ̉2;編集してください̀2;

mvn eclipse:eclipse の実行

Eclipse で読み込めるようにします̀2;

$ mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

実行することにより、src/main/webapp/WEB-INF/lib/ が更新され、必要な jar ファイルが配置されます̀2; Eclipse でプロジェクトとしてインポートしてください̀2; プロジェクトにエラーなどが表示される場合は、プロジェクト̉2;リフレッシュした後にプロジェクト̉2;ビルドしてください̀2;(自2d5;ビルドがŠ2d;定されていればクリーンするとビルドされます)

データベースの作210;

今回は H2 ̉2;229;u28;します̀2; 225;なデータベース̉2;229;u28;する場合は、この部206;̉2;スキップしてください̀2;

$ mkdir src/main/webapp/WEB-INF/db
$ cd src/main/webapp/WEB-INF/db
$ java -jar ../lib/h2-1.3.168.jar 

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

JDBC URL ̉2; jdbc:h2:sample ̉2;入29b;して、H2 のデータベースに接続します̀2; ドライバクラスは org.h2.Driver、ユーザ名はsa、パスワードは空欄のデフォルトP24;で問題̄2;りません̀2; 接続ボタン̉2;2bc;下して、SQLの入29b;画ॶ22;表示します̀2; 今回は以下の単純なテーブル̉2;作210;します̀2;

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

上記̉2;入29b;して、実行ボタン̉2;2bc;下します̀2; エラーが表示されていないこと̉2;確認し、TEST_TABLEが左側に一覧されていること̈2;確認します̀2; テーブルが作210;できたら、H2 ̉22;了します̀2; 左上の207;断̊2;イコン̉2;2bc;下するとデータベースの接続が207;断されます̀2; ブラウザ̉2;閉じて̈2; H2 はߔ2;了しないので、タスクトレイに̄2;る̊2;イコンからߔ2;了̉2;選29e;してください(EXITメニュー̉2;選29e;します)̀2;

プロジェクトのトップディレクトリに23b;ります̀2;

$ cd ../../../../../

DBFlute のダウンロード

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

$ mvn dbflute:download

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

0.9.4.1 以24d;のバージョン̉2;229;u28;していて、Unix 系 OS ̉2;229;u28;している場合は、ant の実行j29;̉22d;定する必要が̄2;ります̀2;

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

DBFlute クライ̊2;ントの生210;

mvn dbflute:create-client ̉2;実行して、DBFlute クライ̊2;ント̉2;生210;します̀2; 実行すると、mydbflute/dbflute-[バージョン]/etc/client-template/dbflute_dfclient.zip ̉2; dbflute_sample ディレクトリに展開して、pom.xml に記述したパラメータ̉2; DBFlute クライ̊2;ントに自2d5;で反f20;します̀2;

$ mvn dbflute:create-client

スキーマ情報の取得

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

$ mvn dbflute:jdbc

今回は、データベースの作210;の24b;順で生210;した H2 データベース̉22;照して、DBFlute が実行されます̀2; 対象の DBFlute のŠ2d;定ファイルは dbflute_sample/dfprop/databaseInfoMap.dfprop になります̀2;

クラスファイルの生210;

mvn dbflute:generate ̉2;実行して、データベースに̊2;クセスする DBFlute のクラス̉2;自2d5;生210;します̀2; 実行すると、dbflute_sample ディレクトリの generate.[sh|bat] が実行されます̀2;

$ mvn dbflute:generate

今回は、作210;した H2 のデータベースの TEST_TABLE クラスが生210;されます̀2;

dicon のŠ2d;定

DBFlute とデータベースの情報̉2; dicon ファイルに記述します̀2;

src/main/resources/app.dicon ̉2;以下のように記述されているか確認します̀2; dbflute.dicon が include されている必要が̄2;ります̀2;

<?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="aop.dicon"/>
    <include path="dbflute.dicon"/>

    <component name="actionMessagesThrowsInterceptor"
        class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
</components>

src/main/resources/jdbc.dicon ̉2;以下のように編集します̀2; データベースの情報̉22d;定します̀2;

<?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>

その他の dicon ファイルは SAStruts の Maven Archetype で SAStruts 向けに出29b;されていると思いますが、必要に応じて変更してください̀2;

準備完了

以上で DBFlute ̉2;u28;いて、データベースに̊2;クセスすることができるようになります̀2; ̄2;とは、必要なウェブページなど̉2; SAStruts で作210;してください̀2;

さらに、CRUD なページ̉2;作210;したい場合は、以下̉22;照してください̀2;

SAStruts のページの自2d5;生210;

DBFlute Maven Plugin では、各テーブルにग़2;する SAStruts u28;のページ̉2;自2d5;生210;することができます̀2; 自2d5;生210;する場合は、以下の24b;順で実行してください̀2;

CRUD の生210;に̄2;たり、デフォルトの index.jsp が存W28;しない場合は CRUD のインデックスページ̉2;生210;するので、ٞ2;存の index.jsp ̉2;24a;除しておきます̀2;

$ rm src/main/webapp/WEB-INF/view/index.jsp

クラスファイルとJSPの生210;

mvn dbflute:generate-crud ̉2;実行して、クラスファイルと JSP ̉2;自2d5;生210;します̀2;

$ mvn dbflute:generate-crud

dicon の更新

生210;したファイルでページング処理̉2;行うために dicon ̉2;更新します̀2;

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

<?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="org.example.crud.creator.PagerCreator"/>

</components>

src/main/resources/customizer.dicon ̉2;以下のように編集します̀2; pagerCustomizer ̉2;追2a0;します̀2;

<?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>

Eclipse からの実行

Eclipse で Tomcat プラグインがインストールして̄2;る場合は、Eclipse 上から実行して2d5;作̉2;確認することができます̀2; Tomcat プラグインからプロジェクトのコンテキストの更新̉2;して、Tomcat ̉2;起2d5;してください̀2; 起2d5;する24d;にプロジェクト̉2;リフレッシュして、ビルドするの̉2;忘れないようにしてください̀2;

war ファイルの生210;

mvn install ̉2;実行して、war ファイル̉2;生210;します̀2; target/sample.war に生210;されます̀2;

mvn install

配備

生210;した sample.war ̉2; Tomcat などに配備して http://localhost:8080/sample/ に̊2;クセスして、表示されること̉2;確認してください̀2;