Home > スポンサー広告 > HibernateProxyオブジェクトのinstanceof

スポンサーサイト

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

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/46-5d129cb9
Listed below are links to weblogs that reference
スポンサーサイト from Netforest Developer's Note

Home > スポンサー広告 > HibernateProxyオブジェクトのinstanceof

Home > Hibernate > HibernateProxyオブジェクトのinstanceof

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出来ます。

Comments:0

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/46-5d129cb9
Listed below are links to weblogs that reference
HibernateProxyオブジェクトのinstanceof from Netforest Developer's Note

Home > Hibernate > HibernateProxyオブジェクトのinstanceof

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

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