質問

インメモリ HSQL データベースで実行されるいくつかの統合テストを含む Spring/Hibernate Web アプリがあります。Hibernate はこの空のデータベースを取得し、hbm2ddl=create のおかげですべてのテスト テーブルと制約を作成します。ただし、afterPropertiesSet() メソッド中にデータベースから特定の構成値をチェックする新しい Bean があるため、この Bean が初期化されるときに、そのような行がデータベースに存在する必要があります。

Rail のテスト フィクスチャと同等の Java/Spring/Hibernate をセットアップする良い方法はありますか?Hibernate に「このテーブルを作成するたびに、その直後にこれらの行を挿入する」ように指示する方法を見つけようとしています。追加できるコールバックやフックが見つかりませんでしたが、別の方法があるかもしれません。

役に立ちましたか?

解決

  私は「直後にこれらの行を挿入し、あなたがこのテーブルを作成するとき、」休止状態を伝える方法を見つけようとしている。

Hibernateは3.1ので、あなたが休止状態の実行時のクラスパスにし、スキーマ・エクスポートの時にimport.sqlと呼ばれるファイルを含めることができ、Hibernateはスキーマがエクスポートされた後、そのファイルに含まれているSQL文を実行します。

この機能はロッテルダムJBugとHibernateのimport.sql のブログ記事で発表されました>
  

import.sql:あなたのユニットテストで簡単にインポートデータ

     

Hibernateは小ぎれいな機能を持っています   それは重く下、文書化され、   未知の。あなたは、SQLスクリプトを実行することができます   SessionFactory作成中   右のデータベーススキーマの後   新鮮でデータをインポートする世代   データベース。あなただけのファイルを追加する必要があります   あなたのクラスパス内の名前付きimport.sql   ルートとセットのいずれかcreateか   あなたのようcreate-drop   hibernate.hbm2ddl.autoプロパティます。

     

私は、Hibernate検索中のためにそれを使用します   アクション今私が始めていることを   クエリ章。それは私を初期化   以下のためのデータの新鮮なセットのデータベース   私のユニットテスト。 JBossのSeamはそれを使用しています   様々な例でたくさん。   import.sqlは非常に単純な機能です   しかし、一度に非常に便利です。思い出します   SQLは、に依存する可能性があることを   データベース(ああポータビリティ!)。

#import.sql file
delete from PRODUCTS
insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('1', '630522577X', 'My Fair Lady', 19.98, '630522577X.jpg', 'My Fair blah blah...');
insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values ('2', 'B00003CXCD', 'Roman Holiday ', 12.98, 'B00003CXCD.jpg', 'We could argue that blah blah');
     この詳細については、

  機能、エヤルのブログを確認し、彼   それについてちょっといいエントリを書きました。   追加追加したい場合は覚えておいてください   データベースオブジェクト(インデックス、テーブルおよび   ように)、あなたはまた、補助を使用することができます   データベースには、機能オブジェクトます。

それはまだ実際に文書化されていません。

他のヒント

は、任意のSQLコマンドを実行することを可能にする3.6構成を休止することである:

hibernate.hbm2ddl.import_files

http://docs.jboss.orgに参照してください。 /hibernate/core/3.6/reference/en-US/html_single/ に、ドキュメントにエラーがある気づき:プロパティは、最後にsのimport_files、です。

JUnit テストについて話している場合と、それを使用している場合 AbstractTransactionalDataSourceSpringContextTests 次のようなオーバーライドできるメソッドがあります onSetupBeforeTransaction テストテーブルデータなどを事前に設定するためのフックを提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top