私は、PostgreSQLのデータベースに接続されたスプリングブートアプリケーションを持っています。DAO層を使用して実装されるHibernate
とJPA
し、auto-ddl
休止状態テーブルを作成するの世話をするようにイネーブルされます
突然、今日の私の友人は、列タイプのALTER 1に頼まBigInteger
にString
、私はその列にすでにデータが充填され、休止状態にすることを許可されませんので、不可能であると述べ、
今、彼はそれが休止状態に欠点であり、我々はまた、企業ALTER列定義は、生産の要件に基づいてんの議論があった言っていますか?
質問
- それは実際に休止状態に欠点でありますか?
- 制作にIT企業、または任意団体頻繁ALTER列の定義を行いますか?
あなたは使用しないでくださいauto-ddl
で生産。それは、しかし、開発のために、生産に使用されることを意図されていませんでした。あなたがそれを使用してはならない理由は、それが非最適なDDLを作成するか、またはちょうどあなたのデータに損傷を与えるかもしれないということです。
DBの変更を行うための好ましいアプローチは、データベースの構造を変更し、バージョン管理に保存し、すべてのSQLスクリプトを含んでいるでしょうフォルダを作成することです。一般的な名前ですmigrations
。その後、手動のようなあなたのデータベースや使用ツールにこれらのスクリプトを実行する可能性がフライウェイ(私の推奨)またはLiquiBaseを。
それでは、どのように利用することができauto-ddl
?たとえば、あなたはそれを作成するために使用されたDDLを取ると、いくつかの調整(必要な場合)を適用した後の移行に保存し、その後、新しいエンティティのテーブルを作成することができます。また、使用することができます検証をからhibernate.hbm2ddl.autoあなたのエンティティとあれば、データベースの一致を確認すること。
そして最後に、あなたの質問に答えます:
- のでいいえ、それは、休止状態の欠点はありません
auto-ddl
、データベースの移行を行うことを意図していませんでした。 - 企業は次のようにユーティリティを使用してデータベースを変更することはありません
auto-ddl
。誰か(DBAまたは開発者)は、移行スクリプトを用意し、それを手動またはリリースに移行ツールによって適用されます。