An open API service indexing awesome lists of open source software.

https://github.com/treetips/spring-boot-flyway-jooq-example

Spring boot + Spring Batch + Flyway + Jooq generator + Jooqのサンプルプロジェクトです。
https://github.com/treetips/spring-boot-flyway-jooq-example

flyway java jooq spring-boot

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

          

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](https://www.docker.com/products/docker-toolbox)等でdocker環境を構築して下さい。MySQLコンテナの起動等は後述で行うので、docker toolboxのインストールのみ行って下さい。

### IDE

- [Spring Tool Suite](https://spring.io/tools/sts)
- STSにGradle Supportをインストール

## Install

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

### Checkout project

```bash
# ホームディレクトリに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専用ホストを生成し、起動します。

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

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

```bash
cd master/docker/
./start_container.sh
```

### MySQLの接続先を変更

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

```bash
docker-machine ip mysql
```

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

```yml
ports:
- 3357:3306
```

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

```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](https://github.com/tcnksm/tool/blob/master/LICENCE)

## Author

[tcnksm](https://github.com/treetips)