[Seasar-user:3207] Re: トランザクションの制御について

J.r0ck j69
2006年 2月 16日 (木) 21:36:06 JST


J.r0ckです。

> tarumiです
(中略)
> 通常テーブルに変更すると、7でデータを取得できることから
> A.「4と7のDBセッションが違う」もしくは
> B.「Temporaryテーブルからデータが取得できない」
> という理由のどちらかだと思います。
> 
> まずAなのですが、トランザクション中で
> 別DBセッションになってしまうことはあるのでしょうか?
> DBセッションは2の物理コネクションを取得の所以外で、
> 生成される可能性はあるのでしょうか?
> 
> またBですが、TemporaryTableの使用した処理を行っている
> 方いらっしゃいませんでしょうか?

自分は、C/Sシステムでは、一時表はよく使ってますよ。

一時表の定義はすべてのセッションで参照できますが、
一時表内のデータを参照できるのは、そのデータを表に挿入する
セッションのみです。
セッションが1:1なので、C/Sシステムなんかは問題が起こらない。

でも、S2DAOではコネクションプールを使用しているんですよね。
であれば、セッションはプール任せになるので...
つまりAの理由となるので一時表は厳しいのでは?

あと、もしかしたら勘違いがあるかもしれないので...
「j2ee.requiredTx」は、Oracleのコネクションのローカルな
トランザクションではないですよ...ね。

以上

On Thu, 16 Feb 2006 19:58:19 +0900
"tarumi" <[E-MAIL ADDRESS DELETED]> wrote:

> tarumiです
> 
> 現在S2DBCPとS2DAOを使用し、
> 以下のような処理を行っています。
> 
> 1.トランザクション開始
> 2. 物理的なコネクションを取得
> 3. 論理的なコネクションを取得
> 4.ストアドプロシージャ実行(Temporary TableにデータをInsert)
> 5. 論理的なコネクションを閉じる
> 6. 論理的なコネクションを取得
> 7.Temporary Tableからデータを取得
> 8. 論理的なコネクションを閉じる
> 9.トランザクションをコミット
> 
> 4のTemporaryTableはDBセッション中で
> Commit、RollBackのタイミングまで
> データを保持する設定になっております。
> またトランザクションは「j2ee.requiredTx」に設定しています。
> 
> 本来ならば
> 4で追加したデータを7で取得出来るはずなのですが、
> 現状、7で取得できていません。
> 
> 通常テーブルに変更すると、7でデータを取得できることから
> A.「4と7のDBセッションが違う」もしくは
> B.「Temporaryテーブルからデータが取得できない」
> という理由のどちらかだと思います。
> 
> まずAなのですが、トランザクション中で
> 別DBセッションになってしまうことはあるのでしょうか?
> DBセッションは2の物理コネクションを取得の所以外で、
> 生成される可能性はあるのでしょうか?
> 
> またBですが、TemporaryTableの使用した処理を行っている
> 方いらっしゃいませんでしょうか?
> 
> 環境:
> DB:Oracle9.0.1
> S2DAO:1.0.30
> 
> 以上、よろしくお願い致します。
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user

-- 
J.r0ck <[E-MAIL ADDRESS DELETED]>




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