[jpa:27] Re: Hibernate EntityManager の使用感想
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 4月 24日 (火) 18:00:19 JST
小林 (koichik) です.
Date: Tue, 24 Apr 2007 16:59:29 +0900
From: naoki <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [jpa:25] Re: Hibernate EntityManager の使用感想
> さとうです。
お待ちしてました.(^^;
> JPA仕様では、同じJPAランタイム間でのLAZYなプロパティのデタッチ/マージを
> サポートすることを要求していますね。
>
> ----------------------------------------------------------------------
> 3.2.4.2 Detached Entities and Lazy Loading
なるほど...
別 VM に対してもポータブルでないとダメなんですね.
でもでも,Hibernate + Javassit の組み合わせで
それが十分に実現できてるとは思えない...
> > でもでも,クラス名が変わることは普通にありそう.
> >
> > 例えば Foo と Bar というエンティティがあって,Bar から
> > Foo への関連が Proxy になってるとします (未ロード).
> > Bar をセッションに保存して Tomcat を終了し,新たな
> > エンティティ Baz を追加します.
>
> Persistence Unitの内容に変更がある場合は、JPA仕様では
> 想定していないような気がします。仕様には、それをサポートするとも
> しないとも書いていませんが。
永続ユニットが変更されなくても,Javassist の
ProxyFactory を使うアプリケーションだとその
影響を受けて Proxy のクラス名が変わってしまう
可能性があるんですよね.
現状,Hibernate + Javassist の組み合わせでは
Proxy のクラス名は Javassist にお任せで,
Hibernate 自身では管理していないので,外からの
影響を受けやすいように思います.
Hibernate + CGLIB は使ってないので調べてませんが,
CGLIB の Enhancer はデフォルトではクラス名に
ハッシュ値を含むので,そのまま使ってはいないかも.
TopLink は Hibernate のようにサブクラス化
するわけではないので,このような問題は
そもそも起こりえないのがいいですね.
代わりに Javaagent 使わないといけない場面が
あったりしますから,一長一短という感じですが.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
jpa メーリングリストの案内