ここ数日、私は袖をまくり上げて、初めて Hibernate を掘り下げました。Hibernate のデフォルトの動作が、データベース自体の DDL を実際に駆動することであることを知って、非常に驚きました。
<property name="hbm2ddl.auto">create</property>
or
<property name="hbm2ddl.auto">update</property>
これは、誰か (通常は DBA) がデータベース構造 (スキーマ、テーブル、キー制約、インデックス、トリガーなど) を作成する、私が慣れているものとは反対です。そして、私 (開発者) は、これらの制約を順守するようにアプリをコーディングします。
これにより、同様に関連するいくつかの質問が発生します。
- Hibernate ベースのアプリと組み合わせて、インデックスはどのように作成/維持されますか? お気に入りのリレーショナル DB (MySQL、Postgres、Oracle など) を選択してください。Hibernate を介してインデックスを指定しますか (そうであれば、どのように)、または DB でそれらを指定する必要がありますか?
- 上記の #1 と同じ質問ですが、インデックスの代わりに複数列のキーを使用します。
- Hibernateで列の順序をどのように指定しますか? エンティティ内の Java フィールドの順序に基づいているだけですか? Hibernate が追加する列 (結合や継承戦略の実装など) はどうですか?
- Hibernate が作成したテーブルにトリガーを手動でインストールする場合、Hibernate がそれを上書き/削除しないようにするにはどうすればよいですか?
- Hibernate テーブルが作成される DB/スキーマを指定するにはどうすればよいですか?
前もって感謝します!