2014年7月3日木曜日

Doma gen で dao と entity を自動生成する

Doma に付属するツール Doma Gen で、dao と entity を自動生成する方法。

以下のチュートリアルが参考になります。



doma-genをダウンロードしたら、必要なファイルをプロジェクトにコピーします。

  • doma-gen-build.xml : プロジェクトトップに配置
  • doma-gen-1.xx.x.jar : WEB-INF/lib に設置(アプリケーションとしては不要なので、別の場所の方が良いのかも)
  • freemaker-2.x.xx.jar : 同上
後は、接続するDBに対応したドライバーを準備します。ここでは、MySQLを使いました。

  • mysql-connector-java-x.x.xx-bin.jar : WEB-INF/lib に設置

ant でビルドしますので、適当に ant をインストールしておきましょう。バージョンの制限は見た限りありませんでした。


ビルドしたいプロジェクトに合わせて、doma-gen-build.xml を編集します。
今回は tomcat プロジェクトに設置しました。

<?xml version="1.0" encoding="UTF-8"?>
<project name="doma-gen-example" default="gen" basedir=".">
<property name="javaDestDir" value="WEB-INF/src"/> POJO出力ディレクトリトップ。
<property name="sqlDestDir" value="WEB-INF/src"/> SQL出力ディレクトリトップ。
<property name="dialectName" value="mysql"/> 方言名。ここではMySQL用です。
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> MySQL用ドライバークラス名。
<property name="url" value="jdbc:mysql://localhost:3306/sc_ryi"/> DB接続URL
<property name="user" value="****"/> DB接続用アカウント。
<property name="password" value="******"/> DB接続用パスワード。
<property name="entityPackageName" value="jp.masazdream.scryi.server.db.entity"/> エンティティパッケージ。
<property name="daoPackageName" value="jp.masazdream.scryi.server.db.dao"/> Daoパッケージ
<property name="configClassName" value="jp.masazdream.scryi.server.db.config.AppConfig"/> AppConfigクラス。ここはクラスです。
<property name="sqlTestClassName" value="jp.masazdream.test.scryi.server.db.SqlTest"/> SqlTestクラス。
<property name="sqlFilePattern" value="META-INF/**/*.sql"/>
<path id="classpath">
<fileset dir="WEB-INF/lib"/> 各種ライブラリを設置したディレクトリ。
</path>
<taskdef name="gen" classname="org.seasar.doma.extension.gen.task.Gen" classpathref="classpath" loaderref="loader"/>
<taskdef name="genTest" classname="org.seasar.doma.extension.gen.task.GenTest" loaderref="loader"/>
<typedef name="entityConfig" classname="org.seasar.doma.extension.gen.task.EntityConfig" loaderref="loader"/>
<typedef name="daoConfig" classname="org.seasar.doma.extension.gen.task.DaoConfig" loaderref="loader"/>
<typedef name="sqlConfig" classname="org.seasar.doma.extension.gen.task.SqlConfig" loaderref="loader"/>
<typedef name="sqlTestConfig" classname="org.seasar.doma.extension.gen.task.SqlTestConfig" loaderref="loader"/>
<target name="gen">
<gen
dialectName="${dialectName}"
driverClassName="${driverClassName}"
url="${url}"
user="${user}"
password="${password}">
<entityConfig
destdir="${javaDestDir}"
packageName="${entityPackageName}"
/>
<daoConfig
destdir="${javaDestDir}"
packageName="${daoPackageName}"
configClassName="${configClassName}"
/>
<sqlConfig
destdir="${sqlDestDir}"
/>
</gen>
</target>
<target name="genTest">
<genTest
dialectName="${dialectName}"
driverClassName="${driverClassName}"
url="${url}"
user="${user}"
password="${password}">
<sqlTestConfig
destdir="${javaDestDir}"
testClassName="${sqlTestClassName}">
<fileset dir="${sqlDestDir}">
<include name="${sqlFilePattern}"/>
</fileset>
</sqlTestConfig>
</genTest>
</target>
</project>
ant はコマンドラインから実行します。

ant -f doma-gen-build.xml

これで、WEB-INF/src 配下に DAO、Entityクラスが自動生成出来ます。

0 件のコメント:

コメントを投稿