1

ここ数日、私は袖をまくり上げて、初めて Hibernate を掘り下げました。Hibernate のデフォルトの動作が、データベース自体の DDL を実際に駆動することであることを知って、非常に驚​​きました。

<property name="hbm2ddl.auto">create</property>
    or
<property name="hbm2ddl.auto">update</property>

これは、誰か (通常は DBA) がデータベース構造 (スキーマ、テーブル、キー制約、インデックス、トリガーなど) を作成する、私が慣れているものとは反対です。そして、私 (開発者) は、これらの制約を順守するようにアプリをコーディングします。

これにより、同様に関連するいくつかの質問が発生します。

  1. Hibernate ベースのアプリと組み合わせて、インデックスはどのように作成/維持されますか? お気に入りのリレーショナル DB (MySQL、Postgres、Oracle など) を選択してください。Hibernate を介してインデックスを指定しますか (そうであれば、どのように)、または DB でそれらを指定する必要がありますか?
  2. 上記の #1 と同じ質問ですが、インデックスの代わりに複数列のキーを使用します。
  3. Hibernateで列の順序をどのように指定しますか? エンティティ内の Java フィールドの順序に基づいているだけですか? Hibernate が追加する列 (結合や継承戦略の実装など) はどうですか?
  4. Hibernate が作成したテーブルにトリガーを手動でインストールする場合、Hibernate がそれを上書き/削除しないようにするにはどうすればよいですか?
  5. Hibernate テーブルが作成される DB/スキーマを指定するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

0
  1. @Indexエンティティ フィールドで注釈を使用できます
  2. この質問/回答を参照してください:休止状態のエンティティで複数の列でインデックスを定義する方法は?
  3. はい、エンティティ内の Java フィールドの順序に基づいているだけです
  4. hbm2ddl.auto を "validate" に設定して、更新を行わずにスキーマを検証するだけにすることができます。
  5. @Table(name = "..")アノテーションを使用して、エンティティ/テーブルのカスタム名を指定できます
于 2013-07-25T02:35:29.277 に答える