2

私はJPA-Hibernateを学習中です。

私はこの記事を フォローしています。Dog.javaでは。と記載されてい@Table(name = "dog")ます。persistence.xml私は以下を持っています

<property name="hibernate.hbm2ddl.auto" value="create"/>

これにより、データベースにテーブルドッグが作成されますか?データベースにテーブルDogを作成していません。したがって、実稼働環境では、これは危険な場合があります。そのようなシナリオでは、何が理想的な値である必要があります hibernate.hbm2ddl.autoか?

助言がありますか?

4

4 に答える 4

4

あらゆる意味で危険です。アプリケーションユーザーはDDL権限(テーブルの変更、テーブルの作成)を持ってはいけません。アプリケーションユーザーはDML(SELECT、INSERT、UPDATE、DELETEなど)のみを実行する必要があります。

于 2012-08-20T18:51:50.707 に答える
2

はい、アプリがデプロイされるたびに新しいテーブルが作成されます。使用する方が良い:

<property name="hibernate.hbm2ddl.auto" value="validate"/>

すでにデータが用意されている場合。

可能なオプションは次のとおりです。

  • 検証:スキーマを検証し、データベースに変更を加えません。
  • update:スキーマを更新します。
  • create:スキーマを作成し、前のデータを破棄します(!)
  • create-drop:セッションの最後にスキーマをドロップします(!)
于 2012-08-20T18:48:44.547 に答える
1

<property name="hibernate.hbm2ddl.auto" value="create"/>サーバーを再起動するたびにすべてのテーブルが削除され、新しく作成されるため、本番環境に設定しないでください。hibernate featureあるデータベースから別のデータベースに移行する場合は、このproperty()を利用できます。

<property name="hibernate.hbm2ddl.auto" value="update"/>設定する場合は、開発中(本番環境ではない)に設定します。pojo classesこれにより、 (注釈)に変更が加えられた場合にスキーマが更新されます。

また、次を確認してください:Hibernate:hbm2ddl.auto =本番環境で更新しますか?

Hibernatehbm2ddl.autoの可能な値とその機能

于 2012-08-20T18:48:51.490 に答える
1

実稼働環境では「なし」に設定します。

于 2012-08-20T18:49:57.970 に答える