私はHibernateに「このテーブルを作成するときはいつでも、すぐ後にこれらの行を挿入する」ように伝える方法を見つけようとしています。
Hibernate 3.1以降、Hibernateのランタイムクラスパスで呼び出されるファイルを含めることができ、import.sql
スキーマのエクスポート時に、Hibernateはスキーマがエクスポートされた後にそのファイルに含まれるSQLステートメントを実行します。
この機能は、ロッテルダムJBugとHibernateのimport.sqlブログ投稿で発表されています。
Hibernateには、文書化が大幅に不足していて不明な、きちんとした小さな機能があります。SessionFactory
データベーススキーマ生成直後の作成中にSQLスクリプトを実行して、新しいデータベースにデータをインポートできます。import.sql
クラスパスルートで名前が付けられたファイルを追加し、create
または
プロパティcreate-drop
として
設定する必要がありhibernate.hbm2ddl.auto
ます。
クエリの章を開始したので、Hibernate SearchinActionに使用します。単体テスト用の新しいデータセットでデータベースを初期化します。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');
この機能の詳細については、Eyalのブログを確認してください。彼はそれについてのちょっとしたエントリを書いています。データベースオブジェクト(インデックス、テーブルなど)を追加する場合は、補助データベースオブジェクト機能を使用することもできます。
それはまだ実際には文書化されていません。