2016-05-30 9 views
1

サンプルデータで初期化され、私が欲しい:春+ HibernateのMySQLデータベースは、私は春のMVC + Hibernateのプロジェクトを展開する

  1. が最初だせために自動的に
  2. 更新スキーマの場合に、すべてのデータベース・スキーマを作成します属性が追加されます。
  3. USERなどのルートユーザーの一部のテーブルにレコードを追加します。 hibernate.hbm2ddl.auto"create"に設定されている場合

は、私が以前のデータに私がプロジェクトを再起動するたびに失われます。 "update"に設定されている場合、import.sql私はサンプルレコードを作成するためにsqlを実行しますが、実行されません。

"製品"環境では、どのようなベストプラクティスがありますか?

答えて

0

hibernate.hbm2ddl.autoは自動的例では、より複雑なデータベース更新のシナリオを処理することはできません。生産のために

私は(複数のプロジェクトでは、数年のためにそれを使用して)LiquiBaseをとの良好な経験を持っているhttp://www.liquibase.org/https://flywaydb.org/

をお勧めします。

いくつかの学習曲線といくつかの重複があります(独自のDB構造を作成する必要があります。これらのツールはエンティティからDB構造を作成しません)。

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-execute-liquibase-database-migrations-on-startupを参照してください。

Spring Bootがなくても、本当に簡単です(クラスパスに新しいライブラリを追加し、最初のスクリプトと1つのSpring Beanを作成するだけです)。

編集:あなたは、上記の概念を使用してサンプルプロジェクトに興味があるなら、 は、それがさらに洗練されたscenario-アプリケーションのダウンタイムなしでDBを更新する方法について説明しますhttps://spring.io/blog/2016/05/31/zero-downtime-deployment-with-a-database

を参照してください。

0

insert_sqlコマンドでsample_data.sqlファイルを作成します。

insert into table(col1,col2) values (val1,val2); 
insert into table(col1,col2) values (val1,val2); 

その後(私はあなたのsample_data.sqlとdatabase.propertiesファイルが同じディレクトリにあることを前提と)以下のようなファイルあなたのdatabase.propertiesにプロパティを追加します。

database.hbm2ddl.import_files = sample_data.sql 

最後のステップは次のとおりです。 sessionFactoryコンフィグレーションに次のプロパティを追加します。あなたは、古いデータを保持したいとき

<prop key="hibernate.hbm2ddl.import_files">${database.hbm2ddl.import_files}</prop> 
関連する問題