[Seasar-user:20566] Re: 複数の永続ユニット使用について
oh
[E-MAIL ADDRESS DELETED]
2011年 2月 7日 (月) 00:58:25 JST
長谷川です。
On Mon, 07 Feb 2011 00:30:00 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:
>
> 同様ですね.
> 同様に
>
> <component class="org.seasar.framework.unit.impl.ExpectedDataReaderImpl">
>
> にも
>
> <property name="dataAccessor">da1</property>
>
> を追加してください.
> 同様に,必要なら ExpectedDataReaderImpl も
> 二組定義してください.
> 以下同様の現象が発生した場合も同様に対応してください.
>
了解いたしました。やってみます。
>
> sc02 側の検証がしたいなら,DataAccessor の
> EntityManager だけ変更してもダメで,DataSource も
> 変えないとダメだということを言ってます.
> DataSource を変えないのなら,EntityManager を
> 変えても意味がないということです.
> なんか話が通じないと思ったら,
>
> > こちらですが、DataSource は確かに2つあるのですが、テスト用の環境では
> > その接続先が単一の DB となっていたため問題なく動作していたようです。
>
> そういうことでしたか.
> 各 EntityManager/DataSource が別の DB に
> つながるようにすれば自分が書いてきたことも
> 分かってもらえるんじゃないでしょうか.
>
えっと、そこのところは理解しているつもりです。DataSource の接続先が別に
なっている本来の構成でしたら、当然その設定も必要だということは。
なのですが、そもそも元の話が update が発行されていないということでして
update が発行されているけど更新されていないといった話ではないのです。
この update が必要かどうかを判断しているのは DataSource ではなく EntityManager
だという理解なのですが、そこが間違っている?
EJB では、永続化コンテキスト管理下の managed な entity が変更されていたら
トランザクションのコミット時に update を発行するものだという認識です。
したがって、実際の Bean が変更に用いた EntityManager と DataAccessor の
使用する EntityManager が異なっているため、DataAccessor が flush を行っても
実際の Bean が変更に用いた EntityManager の flush が行われないため update
が発行されていない。といった現象なのだと考えていたのですが
EntityManager の接続する DataSource とは別の問題のように思えます。
やっぱり、理解が変でしょうか。もう一度 EJB の仕様書を読み直してみます。
以上、よろしくお願いいたします。
--
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/
Seasar-user メーリングリストの案内