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;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 にアクセスして、表示されることを確認してください。
