2017-06-04 12 views
4

私のデータベースの背景は、Djangoフレームワーク(Python)に由来しています。 Djangoでは、データベースの移行を開始するのは簡単でした:Django migrations。 Djangoフレームワークは、モデルに基づいてマイグレーションを作成するためのツールと、データベースにマイグレーションを適用するツールを提供しました。私は、このやり方が開発と生産の両方で機能していたと思います。自分でマイグレーションを書く必要はありませんでした。フレームワークによって作成されました。HibernateでSpringブートでデータベース移行を処理するには?

私はSpring BootとHibernateでプロジェクトを開始しました。 JPAで休止状態を使用するようにアプリケーションを構成します。これらの設定では、私のフレームワークがデータベースの移行をどのように処理するのかを知る必要があります。つまり、列を変更した場合はその列がタイプされているか、または削除されている可能性があります。次に、データベースを変更にどのように移行しますか?私は、起動時に自動的に列の変更を検出し、モデル(エンティティ)に基づいて存在しない列を作成することを春のブートが知っています。私はそれが

しかし、どのように、それは既存のデータベース・オブジェクトを処理しない変数

spring.jpa.hibernate.ddl-オートとは何かを持っていると思いますか?列にも値が追加されますか?私が設定したデフォルト値は?列の種類を変更するとどうなりますか?変更を処理できますか?これらの設定とスプリングブートの自動データベース管理は、おそらく長期的には十分ではありませんか?

私が知りたいのは、Springブートと休止状態の組み合わせによるデータベース移行の処理方法に関するベストプラクティスは何ですか?私は、このコンビネーションを持つ人々のほとんどがどのように移行を処理するのかという標準があると思いますか?私はそれがDjangoと同じくらい簡単であることを願っています...私は、flywayについて知っていますが、私は本当にそれが必要かどうか、または私のこの組み合わせ(春のブートと冬眠を含む)で多く使用されている場合はわかりません。

+2

はい、Flywayとliquibaseは両方ともデータベース移行ツールとして適しています。あなたが春と冬眠を使用しているという事実は本当に無関係です。データベースを移行する必要がある場合は、適切な選択肢です。 ddl-autoはデータベース移行ツールではありません。 IMHOを使用してスキーマを開始し、生成するための素早い方法です。私が今まで生産で使っていたものではありません。 –

答えて

5

LiquibaseまたはFlywayは、データベース移行のバージョン管理/処理の2つの主要なオプションです。 ddl-autoはすばやく汚れていますが、処理する必要があるものはすべて考慮されていません。競争条件(DDLを同時に更新しようとする2つのインスタンス)の可能性もあります。

この回答は、運用環境でddl-autoについてさらに詳しく説明されています。

Hibernate: hbm2ddl.auto=update in production?

https://www.credera.com/blog/technology-insights/java/liquibase-fed-inconsistent-schemas/理由/概念上のビットより多くの情報を持っています。

関連する問題