テスト用にHibernate(JPA2)hibernate.hbm2ddl.auto=update
、プロダクション用にhibernate.hbm2ddl.auto=validate
を使用しています。Hibernateデータベーススキーマを強化しますか?
私がしたいのは、生成されたスキーマをテスト用に生成され、本番用に検証されるように追加のテーブル(エンティティにはマッピングされていない)で拡張することです。
これは可能ですか?
テスト用にHibernate(JPA2)hibernate.hbm2ddl.auto=update
、プロダクション用にhibernate.hbm2ddl.auto=validate
を使用しています。Hibernateデータベーススキーマを強化しますか?
私がしたいのは、生成されたスキーマをテスト用に生成され、本番用に検証されるように追加のテーブル(エンティティにはマッピングされていない)で拡張することです。
これは可能ですか?
はい、「auxiliary database objects」を使用することは可能です。私は文書が最大ではなかったので、トピックにblog postを書きました。
編集:私はそのブログで言及しなかった休止状態のもう一つのドキュメント化されていない機能:あなたはHibernateのスキーマのエクスポートを実行するときに、あなたのクラスパスのルートに「import.sql」という名前のファイルが含まれている場合、それをそのファイル内のステートメントも実行されます。
テーブルを作成するSQLスクリプトを作成します。環境チェーンを解放するときは、最初にSQLを実行してProdでテーブルを作成します。その後、validate
は問題ありません。
これは私が現時点でそれを行う方法ですが、これは問題に答えることはできませんでした。質問は、検証して自動更新する方法でした。 - あなたの答えが正しいと分かっている場合、検証は強化されないので、テーブルが見つからない場合、検証は失敗しません。同様に、自動更新プロセスを強化するものでもありません。 – Ralph
Testで 'update'し、Prodで' validate'したいとします。テーブルが見つからない場合、 'validate'はエラーを投げてしまい、アプリケーションが正しく起動しません。それはあなたが欲しいものですか? – atrain
はい - これはupdateとvalidateのデフォルトの動作です。これをnot jpa managedオブジェクトのテーブルに拡張します。 – Ralph
+1これはうまくいくようですが、JPA2環境でこれを行う方法(私はpersistence.xmlとorm.xmlしか持っていません) – Ralph
@Ralph:私はそれに答えることができません。私はJPAを使用する理由がありませんでした。私はあなたを助けるかもしれないimport.sqlに関する私の答えにメモを追加しました。 –
私はjpaのためにそれを稼働させなかったとしても、純粋な休止状態のために働くという答えを受け入れる – Ralph