Skip to content

Spring boot + Spring Batch + Flyway + Jooq generator + Jooqのサンプルプロジェクトです。

License

Notifications You must be signed in to change notification settings

treetips/spring-boot-flyway-jooq-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spring-boot-flyway-jooq-example

Spring boot + Spring batch + Flyway + Jooqのサンプルプロジェクトです。

Description

Spring batchを起動し、javaからFlywayでマイグレーションを行い、マイグレーション結果を元にJooq generatorで各モデルクラスを自動生成し、JooqのDSLで各種SQLのテストを行います。javaから任意のタイミングでFlywayとJooq generatorを呼び出しているサンプルとなっています。

MySQLについてはdocker-composeで起動し、起動スクリプトも同梱しています。

バージョン

  • Spring boot version 1.3.3.RELEASE
  • Spring batch version 1.3.3.RELEASE
  • Flyway version latest
  • Jooq version 3.7.3
  • MySQL version 5.7
  • Docker-engine version latest
  • Docker-compose version latest

プロジェクト構造

spring-boot-flyway-jooq-example
 ┣ master(gradle関連・docker関連)
 ┗ base(親プロジェクト)
   ┗ batch(バッチプロジェクト)

Requirement

docker + MySQLサーバ

MySQLサーバが無い場合は、docker toolbox等でdocker環境を構築して下さい。MySQLコンテナの起動等は後述で行うので、docker toolboxのインストールのみ行って下さい。

IDE

Install

macの場合はdockerのマウントがホームディレクトリ配下でないと動かない ので、ホームディレクトリ以下でcloneして下さい。

Checkout project

# ホームディレクトリにcd
cd
# checkout
git clone git@github.com:treetips/spring-boot-flyway-jooq-example.git

STS に Gradle Supportをインストール

STS -> Dashboard -> ManageのIDE EXTENSIONS -> Findで「gradle」で検索 -> Gradle Supportをインストール。

STS でプロジェクトをimmport

STS -> File -> Import -> General -> Existing projects into workspace で

Usage

MySQLサーバの起動(MySQLサーバが無い場合)

まず、docker-machineでmysql専用ホストを生成し、起動します。

docker-machine create -d virtualbox mysql
docker-machine start mysql

mysqlホストが起動したら、以下の起動スクリプトでdocker上のMySQLサーバをデーモン起動します。

cd master/docker/
./start_container.sh

MySQLの接続先を変更

MySQLサーバのIPを調べます。dockerでMySQLを起動した場合は、以下でIPを確認できます。

docker-machine ip mysql

MySQLのportは3357ですが、変更したい場合は master/docker/docker-compose.ymlを開き、3357を任意のポートに変更して下さい。

ports:
  - 3357:3306

これでMySQLのIPとportが解ったので、 batch/src/main/resources/config/application.yml を開き、以下を任意の接続情報に変更して下さい。

    url: jdbc:mysql://172.16.53.133:3357/${spring.datasource.schema}?useUnicode=yes&characterEncoding=UTF-8&autoReconnect=true&verifyServerCertificate=false&useSSL=false

dockerでMySQLを起動した場合は、docker-machine create 実行毎にIPが変わるため、任意に設定して下さい。

Javaの実行

続いてjavaを実行します。

/batch/src/main/java/com/github/treetips/GenerateMain.java を実行すると、以下の順に処理が実行されます。

Spring batch -> flyway -> jooq generation -> jooq dsl

dockerのスクリプト

master/docker にあるファイルは、それぞれ以下の通りです。

# connect_mysql.sh
docker上のMySQLサーバにリモート接続します。
# start_container.sh
MySQLのコンテナをデーモン起動します。
# stop_container.sh
デーモン起動中のMySQLコンテナを終了します。
# destroy_container.sh
MySQLコンテナを終了し、破棄します。コンテナが削除されるため、MySQLのデータは全て削除されます。
# recreate_container.sh
MySQLコンテナを終了し、破棄し、新たにMySQLのコンテナをデーモン起動します。コンテナが削除されるため、MySQLのデータは全て削除されます。

Licence

MIT

Author

tcnksm

About

Spring boot + Spring Batch + Flyway + Jooq generator + Jooqのサンプルプロジェクトです。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages