[Seasar-user:20571] Re: 複数の永続ユニット使用について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 2月 8日 (火) 01:30:00 JST


小林 (koichik) です.

Date:    Mon, 07 Feb 2011 02:54:59 +0900
From:    oh <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20568] Re: 複数の永続ユニット使用について

> それとは別に、DataAccessor#readDb で発行される EntityManager#flush
> が、実際に DB に更新 SQL を発行しなくてもアサーションが可能なのか
> というところなのですが。

できません.

> 再三 update が発行されるかは問題ないとおっしゃられていますので
> ちょっと混乱してきました。

検証する DB (DataSource) と「違う」DB (DataSource)
に対して update が発行されてもされなくても
問題ないと書いているだけですが.
検証する側の DB (DataSource) の話ではありません.
↓このように.

[Seasar-user:20567]
> > ・ejb1 が em1 経由で ds1 を更新
> > ・ejb2 が em2 経由で ds2 を更新
> > ・da1 が em1 を flush() してデータを検証
> > ・ロールバック
> > 
> > という流れになった場合,em2 は update を
> > 発行しませんが,da1(ds1) の検証には何も問題は
> > ありません.
> > DataAccessor の役割はそういうものです.

em1/ds1 側を検証するのに,em2 側の update が
発行されなくても問題ないと書いているだけです.
em2 側を検証する場合の話ではありません.
言い換えると,em2/ds2 側を検証するのに,
em1 側の update が発行されなくても問題ないと
書いているだけです.

それなのに,

> EntityManager sc01 -> DataSource1 -> local DB
> EntityManager sc02 -> DataSource2 -> 別マシンの DB
(略)
> で、EntityManager の再設定を行わずに DataSource のみの設定を行うように
> 変更してみます

なぜそうなるのか... 

[Seasar-user:20567]
> > em2 側を検証するなら,da2 を用意して,
> > em2 と同時に ds2 も設定する必要があります.

EntityManager と「同時に」DataSource も
設定する必要があると書いているのですが,
どうして DataSource「のみ」設定しようと
考えたのでしょうか?

[Seasar-user:20558]
> > DataAccessor には,それがアクセスする 
> > DataSource と同じ DataSource にアクセスする
> > EntityManager を設定してください.

「同じ」DataSource にアクセスする 
EntityManager を設定してくださいと書いて
いるのですが,どうして「別の」DataSource を
設定しようと考えたのでしょうか?

そもそもは

[Seasar-user:20557]
> > > 	public void setup() {
> > > 		DataAccessorImpl da2 = (DataAccessorImpl) da;
> > > 		da2.setEntityManager((EntityManager) container
> > > 				.getComponent("sc02EntityManager"));
> > > 	}

が,DataSource を変えずに EntityManager だけ
変更していたため,DataSource1 を検証するなら
(DataSource の設定が正しい場合) EntityManager を
sc02 にしても意味がない (DataSource2 側の update が
発行されてもされなくても DataSource1 側の DB には
関係ない) ということを書いていたわけです.
ここでも言い換えると,sc02 側を検証したいなら,
DataSource も DataSource2 に設定しなくては
意味がないということを書いていたわけです.

それなのに,[Seasar-user:20568] ではその
「意味がない」ことをわざわざやっているようにしか
見えません.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



Seasar-user メーリングリストの案内