Home > 2010年06月

2010年06月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

HibernateProxyオブジェクトのinstanceof

mattyです。
Hibernateで遅延ロードしたプロキシオブジェクトをinstanceofするときのメモ。

マッピング時にlazy属性をtrueに指定するとプロキシオブジェクトが設定されるため 本来のクラスでinstanceofしてもfalseになってしまいます。

そのようなプロキシオブジェクトではなく本来のオブジェクトを呼び出したいときに便利なのが
org.hibernate.proxy.HibernateProxyHelpeクラスの getClassWithoutInitializingProxyメソッドです。
このメソッドでは下記のように本来のオブジェクトプロキシオブジェクトから取得。

public static Class getClassWithoutInitializingProxy(Object object) {
	if (object instanceof HibernateProxy) {
		HibernateProxy proxy = (HibernateProxy) object;
		LazyInitializer li = proxy.getHibernateLazyInitializer()
		return li.getPersistentClass();
	}
	else {
		return object.getClass();
	}
}

このメソッドにオブジェクトを渡せば本来のクラスを取得してinstanceof出来ます。

Home > 2010年06月

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。