5

"hbm2ddl.auto"=create Hibernateを追加する と、hbm / 注釈からマッピングを自動的に読み取るテーブルが作成されることを知っています。これが従うべき良い習慣であるかどうか、またその理由を教えてください。

4

2 に答える 2

4

テスト環境で使用する場合 (可能であれば、h2などのメモリ内データベースを使用して- はい、単一のjarファイルにすぎません)、良いアイデアになる可能性があります (本番環境に関連するファイルがないことを確認してください)。設定)

Hibernate In Action book から取得したアドバイスも適用できます

Hibernate ユーザーがSchemaUpdate を使用して本番データベースのスキーマを自動的に更新しようとしているのを見てきました。これはすぐに惨事に終わる可能性があり、DBA によって許可されません

スキーマを生成するだけの場合は、SchemaExport (hbm2ddl の舞台裏のクラス) を使用することをお勧めします。

AnnotationConfiguration configuration = new AnnotationConfiguration();

configuration
.addAnnotatedClass(<TYPE_YOUR_CLASS>.class)
.setProperty(Environment.USER, <TYPE_YOUR_USER>)
.setProperty(Environment.PASS, <TYPE_YOUR_PASSWORD>)
.setProperty(Environment.URL, <TYPE_YOUR_URL>)
.setProperty(Environment.DIALECT, <TYPE_YOUR_DIALECT>)
.setProperty(Environment.DRIVER, <TYPE_YOUR_DRIVER>);

SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile("schema.sql");

schema.create(<DO_YOU_WANT_TO_PRINT_TO_THE_CONSOLE>, <DO_YOU_WANT_TO_EXPORT_THE_SCRIPT_TO_THE_DATABASE>);

ターゲット マシンに応じて Java プロパティを有効にすることもできます

-Dprofile=development

また

-Dprofile=production

ここにアプローチが示されています(Spring を使用していますが、Spring には Hibernate のサポートが組み込まれています)。

于 2010-09-21T04:17:56.910 に答える
2

私はいつもこのように Hibernate を使用してきました。使用している API が賢明な方法で対話できる限り (ほとんどの場合は可能です)、Hibernate がそれを実行できる場合、すべてを自分で行う理由はないと思います。

これは、Hibernate のようなフレームワークの優れた点です。それらは多くの時間を節約し、通常は十分に文書化されており、他のすべてはそれらと「うまくいく」ように設計されています. あなたがしなければならないのは、それらを信頼することだけです:)

于 2010-09-21T04:42:40.777 に答える