Hibernateがどのように機能するか知りたいのですが...A、B、Cの3つのエンティティクラスがあるとします。
私はすでに次の事実を知っています:
- Bオブジェクトに対してselectステートメントは実行しません。
- Bに数十万の新しい行を(persist()を呼び出して)挿入します。
- Aオブジェクトを数百回選択して更新します。
- Cオブジェクトに対しては何の操作も行いません。
- 以前にデータベースに保存された数十万のCオブジェクトがあります。
- 別のセッションでは、まったく同じ操作を繰り返します。
その結果、データベースはますます大きくなり、Bオブジェクトでpersist()を呼び出すのが遅くなることに気づきました。
私の質問は次のとおりです。
- hibernateはデータベース内のすべてのオブジェクトをロードしますか?すべてのA、B、Cオブジェクト?
- データベースからオブジェクトをロードするためにhibernateが実行している操作を確認するにはどうすればよいですか?
- ロード操作を制御できますか?実際、Cオブジェクトをロードしたくないし、Bオブジェクトもロードしたくない。
- エンティティオブジェクトとして実際にロードされたデータベース内のレコードを確認および制御するにはどうすればよいですか?
- BオブジェクトのIDの一意性に関する検証操作がある場合、この検証をログファイルで確認できますか?
- 検証操作を非アクティブ化して、Bオブジェクトのpersist()操作を高速化できますか?実際、コード内でIDの一意性を管理でき、休止状態でそれを検証したくありません。