Hibernate入門


Hibernate.initialize() - 遅延ロードのコレクションやプロキシを強制的に初期化する

2009/02/25 13:55Update
TAGS: Hibernate | 遅延ロード | LAZY | コレクション | プロキシ | 初期化

Syboos.jp編集長

セッションが閉じる(close)前に、Hibernate.initialize()を利用すれば、エンティティやコレクションに対して強制的に初期化することができます。

Hibernate LAZYロードについて
――――――――――――――――――――――――――――――
Hibernate究明 - Hibernate のLAZYロード
Hibernate究明 - Hibernate のLAZYロード及びOpenSessionInView
――――――――――――――――――――――――――――――

LAZYロードの場合、ビューの描画が完了するまでSession を常にオープンにしておくなら、問題はないのですが、ビジネス層が分離している分散アプリケーションでは、フロント側(Webシステムの場合WEB層)で必要になるすべてのデータを事前(セッションが閉じる前)に用意しなければなりません。

すなわち、フロントで必要になるLAZYロードのプロパティやコレクションに対して、正しく値を設定(ロード)する必要があります。

Hibernateは、static の Hibernate.initialize() や Hibernate.isInitialized()メソッド を提供し、遅延ロードのコレクションやプロキシを強制的に初期化することができます。

使い方例:
Cat cat = ...
Hibernate.initialize(cat);//cat プロキシを強制的に初期化します
Hibernate.initialize( cat.getKittens() );//kittens コレクションに対して強制的に初期化します

.

Sponsored Link