[jpa:11] Re: Hibernate EntityManager の使用感想

Hidenoshin Yoshida [E-MAIL ADDRESS DELETED]
2007年 4月 21日 (土) 16:21:15 JST


吉田(da-yoshi)です。

> lazy loadingでProxyが使われている場合でも、
> シリアライズってうまくいきます?
> 特にManyToOneの場合です。
> 
> バイトコードがエンハンスされたクラスが使われるので
> シリアライズはできても、デシリアライズに失敗するような気がします。
> エンハンスされたクラスは複数のVMを旅することができないような。

別VMでのテストはちょっと試せなかったのですが
Tomcatがshutdown時にSession情報をファイルに保存するのを利用して
HttpSessionにEntityを保存した状態でTomcatを再起動後し
再びSession上のEnityを呼び出してみたらどうなるか試してみました。

結果は、デバッグ情報で確認する限り
デシリアライズされたEntityはProxyではなく
エンハンスされていないクラスでした。
再起動前と後でクラス名を表示させたら

examples.entity.Customer_$$_javassist_1
↓
examples.entity.Customer

のように変化しました。

Hibernateの場合、Proxyは遅延ロードの為に使っているので
シリアライズ時に、そのデータを保持しているクラスと
単純に置き換えているのかもしれません。。。

-- 
吉田秀之進
[E-MAIL ADDRESS DELETED]


jpa メーリングリストの案内