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のサンプルプロジェクトです。
- Host: GitHub
- URL: https://github.com/treetips/spring-boot-flyway-jooq-example
- Owner: treetips
- License: mit
- Created: 2016-03-30T16:49:30.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-03-30T17:56:33.000Z (over 10 years ago)
- Last Synced: 2025-05-24T00:09:11.456Z (about 1 year ago)
- Topics: flyway, java, jooq, spring-boot
- Language: Java
- Size: 23.4 KB
- Stars: 1
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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)