Hibernateは、既存の列を変更しないことが欠点でありますか?

アプリ:

私は、PostgreSQLのデータベースに接続されたスプリングブートアプリケーションを持っています。DAO層を使用して実装されるHibernateJPAし、auto-ddl休止状態テーブルを作成するの世話をするようにイネーブルされます

突然、今日の私の友人は、列タイプのALTER 1に頼まBigIntegerString、私はその列にすでにデータが充填され、休止状態にすることを許可されませんので、不可能であると述べ、

今、彼はそれが休止状態に欠点であり、我々はまた、企業ALTER列定義は、生産の要件に基づいてんの議論があった言っていますか?

質問

  1. それは実際に休止状態に欠点でありますか?
  2. 制作にIT企業、または任意団体頻繁ALTER列の定義を行いますか?
クシシュトフ・Atłasik:

あなたは使用しないでくださいauto-ddl生産それは、しかし、開発のために、生産に使用されることを意図されていませんでした。あなたがそれを使用してはならない理由は、それが非最適なDDLを作成するか、またはちょうどあなたのデータに損傷を与えるかもしれないということです。

DBの変更を行うための好ましいアプローチは、データベースの構造を変更し、バージョン管理に保存し、すべてのSQLスクリプトを含んでいるでしょうフォルダを作成することです。一般的な名前ですmigrationsその後、手動のようなあなたのデータベースや使用ツールにこれらのスクリプトを実行する可能性がフライウェイ(私の推奨)またはLiquiBaseを

それでは、どのように利用することができauto-ddlたとえば、あなたはそれを作成するために使用されたDDLを取ると、いくつかの調整(必要な場合)を適用した後の移行に保存し、その後、新しいエンティティのテーブルを作成することができます。また、使用することができます検証をからhibernate.hbm2ddl.autoあなたのエンティティとあれば、データベースの一致を確認すること。

そして最後に、あなたの質問に答えます:

  1. のでいいえ、それは、休止状態の欠点はありませんauto-ddl、データベースの移行を行うことを意図していませんでした。
  2. 企業は次のようにユーティリティを使用してデータベースを変更することはありませんauto-ddl誰か(DBAまたは開発者)は、移行スクリプトを用意し、それを手動またはリリースに移行ツールによって適用されます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315469&siteId=1