[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 メーリングリストの案内