Maven2でmigration

| # Comments | 2 Trackbacks
Javaの世界にはMaven2という便利なビルドツールがあります。

先日開催されたSeasar Conference 2008 Autumnにて、JiemamyというEclipse&Maven2プラグインが紹介されていました。

JiemamyはオープンソースのDB設計・リファクタリングサポートツールです。

DBリファクタリングの必要性は明らかですが、様 々な要因により、気軽にリファクタリングを行うことができません。Jiemamyは、DBの進化的設計(Evolutionaly Database Design)を実現するために、以下の要件を軸に、DBに依存するシステムの開発・運用をサポートします。

  • データベースの構成変更をGUIの操作みで行える。
  • DML(INSERT文 = データ)も一緒に管理出来る。
  • Maven2等と連携することにより、チェックアウトしたてのアプリケーションをコマンド一つで「使える状態」に出来る。

このツールに触発されて、Ruby on Railsが持っている便利な機能であるmigrationがMaven2で行えないか、と考えました。

仕様

ザックリとした仕様は以下のとおり。
まだ思いつきレベルなので今後大いに変更があります。

pom.xmlの設定

pom.xmlに、プラグインを使うための設定を記述する。

<project>

    <build>
        <plugins>
            <plugin>
                <groupId>st.happy_camper.siphon</groupId>
                <artifactId>maven-db-plugin</artifactId>
                <configuration>
                    <rootPackage>root.package</rootPackage>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
    	<repository>
    	    <id>siphon.happy-camper.st</id>
            <name>siphon : Happy-Camper Street Maven2 Repository</name>
    	    <url>http://siphon.happy-camper.st/maven2</url>
    	</repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>siphon.happy-camper.st</id>
            <name>siphon maven plugin</name>
            <url>http://siphon.happy-camper.st/maven2</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <dependency>
            <groupId>st.happy_camper.siphon</groupId>
            <artifactId>siphon.db.api</artifactId>
            <version>x.x.x</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

Migrationクラス

pom.xmlに設定した${rootPackage}.migrateパッケージに設置。

package root.package.migrate;

import st.happy_camper.siphon.db.api.Migration;

public class _20080915185500_CreateUser extends Migration {

    public void up() {
        createTable( "tablename", new CreateTableHandler() {
            public void createTable(Table t) {
                t.integer("userId").notnull().primaryKey();
                t.string("userName").notnull();
            }
        } );
    }

    public void down() {
        dropTable( "tablename" );
    }

}

こんな感じでRuby on Rails風に。
クラス名のアンダーバーで囲まれた数字を連番で実行していきます。

database.properties

database.propertiesファイルにDB接続の設定を記述。

database.root.jdbc = com.mysql.jdbc.Driver
database.root.url = jdbc:mysql://localhost:3306/xxxxx?characterEncoding=UTF-8&characterSetResults=UTF-8
database.root.username = username
database.root.password = password

実行

mvnコマンドにて実行。

$ mvn db:migrate

もちろん、接続するDBの型などに合わせたSQLを吐きます。

うーん、できたら便利かも!?

トラックバック(2)

Happy-Camper Street - siphon (2008年9月24日 13:45)

Maven2でmigrationで考えたMaven2プラグインを構築中。プロジェ... 続きを読む

以前Maven2でmigrationというエントリーで考えたMaven2プラグイ... 続きを読む

comments powered by Disqus

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31