私は昨日ずっと Hibernate に関するさまざまな記事やチュートリアルを読んでいました。その強力さに圧倒されましたが、大きな懸念事項が 1 つあります。
標準的な方法は、Hibernate が DB スキーマを設計/生成できるようにすることです。これは、私が窒息している新しい恐ろしい概念です。私が読んだチュートリアルから、構成ファイルに新しいエンティティを追加し、必要hibernate.cfg.xml
なPOJOに注釈を付けるだけで@Entity
、出来上がり-Hibernateがテーブルを作成します。これは非常にクールですが、いくつかのシナリオについて疑問に思っています。
- すでに DB スキーマがあり、Hibernate が生成しようとしているスキーマがそれに準拠していない場合はどうなりますか? 事前に定義された (Hibernate 以外の) スキーマに屈することを拒否する狂気の DBA がいる場合はどうなるでしょうか?
- (世界中のすべての都市のように) 何万ものレコードを含む参照テーブルがある場合はどうなるでしょうか? インスタンス化して
save()
何万もの一意の POJO を作成する必要がありますか?それとも、Hibernate を構成してテーブルに既に存在するデータを上書きしないようにする方法はありますか? - スキーマ/テーブルでパフォーマンス チューニングを行いたい場合はどうしますか? これには、Hibernate が自動的に作成する以上のインデックス作成、正規化が含まれますか?
- テーブルに制約やトリガーを追加したい場合はどうすればよいでしょうか? インデックス?
これの根底にあるのは次のようなものだと思います。
Hibernate が DB に特定のスキーマ/構成を作成して強制しているようです。このアジェンダが、私たちのプラットフォーム標準、DBA 哲学、および Hibernate がやり取りするテーブルを調整/微調整する能力とどのように矛盾するのか疑問に思っています。
前もって感謝します。