Mavenでs2jdbc-gen

2012-11-17T00:00:00+00:00 Java

まぁググれば色々情報あるのでそれ参考にすれば良いと思います

今までは、普通にデータベースにテーブル作ってエンティティクラス書いてみたいな事してましたが、s2jdbc-genを使ってデータベースからテーブル構成のSQLをダンプできたり、厚生からエンティティクラスを生成したり、データをロード・マイグレーション出来る模様

pom.xml

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.3</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.ant</groupId>
                    <artifactId>ant</artifactId>
                    <version>1.7.0</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>default-cli</id>
                    <configuration>
                        <tasks>
                            <property name="classpath" refid="maven.runtime.classpath" />
                            <ant antfile="${basedir}/s2jdbc-gen-build.xml" inheritRefs="true" target="${ant.target}"></ant>
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

s2jdbc-genはantタスクな模様なので、maven-antrun-pluginを使って実行する。

<dependency>
    <groupId>org.seasar.container</groupId>
    <artifactId>s2jdbc-gen</artifactId>
    <version>2.4.46</version>
</dependency>

も記述しておく

s2jdbc-gen-build.xml

<?xml version="1.0" ?>
<project name="s2jdbc-gen">

    <taskdef resource="s2jdbc-gen-task.properties" classpath="${classpath}" />

    <!-- エンティティクラスからスキーマ情報等をダンプする。dbっていうディレクトリにファイルが生成される -->
    <target name="gen-ddl">
        <gen-ddl
            classpathdir="target/classes"
            rootpackagename="sample"
            classpath="${classpath}"
            dump="true" />
    </target>

    <!-- データベース情報からエンティティクラスを生成する -->
    <target name="gen-entity">
        <gen-entity
            rootpackagename="sample"
            classpath="${classpath}" />
    </target>

    <!-- gen-ddlでダンプされたデータからデータベース情報をマイグレーション -->
    <target name="migrate">
        <migrate
            classpathdir="target/classes"
            rootpackagename="sample"
            classpath="${classpath}" />

    </target>
</project>

あとは

mvn antrun:run -Dant.target=ターゲット名

とかで実行出来る。又、db/migrate/バージョン/create/040-dump/テーブル名.csvにデータをぶっこむ事でマイグレーションをする際にデータを入れる事も可能な模様

fluentdを使ってみる (2) - exec_filter - FuelPHPをやってみる (13) - Controller_Hybridを使う -