2016-10-18 8 views
0

私はMySqlデータベースを持つ簡単なSpring Boot rest APIを持っています。現在はテーブルが1つしかないので、テーブルが存在しない場合はテーブルを作成するために、サーバーの初期化時にジョブを実行するJavaコードがいくつかあります。Springブートプロジェクトをビルドするときにsqlスクリプトを自動的に実行

しかし、私はそれが正しい方法だとは思わない。私はより良い方法は、私は私のプロジェクトを実行するたびに春から実行される外部のSQLファイルを持っていると信じています。

だから、すべてのdbテーブルを持つTABLES.sqlというファイルがあります。ブートするたびに自動的にこれを実行するようにSpringを設定するにはどうすればよいですか?

ありがとうございます!

EDIT: だけさらに明確化のために、私は「DEV」環境、および「PROD」環境上、実際のインスタンスにドッカーデシベル上で実行するために私のプロジェクトを設定しています。 dbユーザー、パスなどはすべて設定可能です。私は基本的に物事を学ぶためにちょうど回っている。 :)

+0

mavenを使用していますか? –

+0

はい、私は自分のプロジェクトにmaven 3を持っています –

答えて

0

schema migrationツールが必要です。私たちのプロジェクトではFlywayを使用しています。

これで、最終バージョンのデータベースを提供するインクリメンタルSQLスクリプトを作成できます。実際に移行を実行するには、移行経路の移行目標を使用する必要があります。

mvn -P<profile> flyway:migrate 
+1

またはFlywayのSpring Bootインテグレーションを使用し、アプリケーションがDBスキーマを検証して移行できるようにします。アプリケーションをビルドしただけであっても、このバージョンはすぐに移行した環境ですぐに実行されるわけではありません。 – dunni

0

Hibernateを使用する場合、クラスパスのルートにあるimport.sqlという名前のファイルが起動時に実行されます。これは、デモや慎重にテストするのに便利ですが、実際には本番環境のクラスパス上にあることは望ましくありません。これはHibernateの機能です(Springとは関係ありません)。

ここで詳細情報を取得:Database initialization

0

OK、私は私が探していたものを見つけたと思う。私はすべての私のテーブルとスキーマmysql.sqlファイルは、などを作成することができ、このスプリングガイドに従って:

Initialize a database using Spring JDBC

これは、私もあなたの助けのための

感謝を望むものは基本的です!

関連する問題