5

Hibernateを読んだ後:hbm2ddl.auto =本番環境で更新しますか?いくつかの質問が生じました。まず、Hibernateを使用する理由は、データベースベンダーに依存しないためです(「同じ」SQLクエリの10バージョンを作成する必要はありません(例:tsqlとsql))。

私の問題は、データベーススキーマ(本番環境)を作成するときに発生します。私が見る限り、私には2つの選択肢があります。

  1. hbm2dll=更新
  2. 純粋なSQL(ddl)スクリプト。

最初の選択肢は、上記のスレッドで広く説明されています。2番目の選択肢は悪いです。それは、最初の問題である「データベースベンダーに依存するSQLステートメントを作成したくない」に戻ったことを意味します。(「all」(最終的にデータベースのHibernateがサポートする)がDDL(データベースの構造の定義と検査に使用されるSQLのサブセット)を実装している場合、このステートメントは誤りになる可能性があります)。

4

4 に答える 4

5

開発/ステージングモードですべての変更を行い、本番環境でスクリプトを手動で(または自動的に、ただし休止状態で実行させないで)転送して実行します。hbm2ddlの更新がすべてのケースをカバーしているわけではないため、スクリプトを調整する必要がある場合があります。

実際、私はhibernateにどのデータベースに対してもddlを実行させませんでした。私はhbm2ddlを使用してテキストを生成します:

org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=;

org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;
于 2009-05-07T17:27:29.060 に答える
3

SchemaExport通常、JPAスキーマをダンプするツールは、静的メタデータのみを読み取るツールに基づいています。

JPAスキーマを生成するMaven/Gradleプラグインhttps://github.com/Devskiller/jpa2ddlがあります。には、すべてのプロパティ、命名戦略、ユーザータイプなどが含まれます。

これを使用して、 Flywayの自動スキーマ移行を生成することもできます。

于 2017-10-27T21:56:14.127 に答える
1

私はHibernate(LOT)が好きで、信じられないほど高品質のコードを作成できると思いますが、非常に礼儀正しいハイイログマにベビーシッターをさせるよりも、本番データベースですぐに緩めることはありません。しばらくの間、すべてがうまくいく可能性がありますが、それが悪くなる1つのインシデントは本当に悪いです。

私の提案はテスト環境で、hibernateにデータベーススキーマを生成させることです。テスト環境でそれらをテストします。次に、それらのスクリプトを実稼働環境に持っていき、実行します。そこでの特異性に注意してください。テストが素晴らしく成功したとしても、私はまだHibernateを本番サーバーでワイルドにすることを許可しません。Hibernate schemagenの出力を取得してテストし、検証されたら、それを本番サーバーにデプロイします。

于 2009-05-07T17:35:01.960 に答える