[seasar-dotnet:1582] Re: S2Dao.netによるトランザクションの拡張について

kubo [E-MAIL ADDRESS DELETED]
2010年 3月 12日 (金) 18:47:56 JST


久保(jflute)です。

FUJIさん、こんばんは

まずは、ログでトランザクションの開始と終了(コミットなど)
が、どういったタイミングで呼び出されているかご確認下さい。

トランザクションをかける
http://s2container.net.seasar.org/ja/quill.html#nodicon_tx

自分はあまりクラスに付けたことがないのですが、
恐らく
「クラスの全てのメソッドにトランザクションAOPが掛かる」
ということだと思うので、
「InsertData呼び出し単位」でのトランザクションで
あることに変わりはないと思われます。
(InsertDataメソッドの属性を付与するのと同じ)
InsertData呼び出す処理(Quillで管理されているクラス)にて
トランザクション属性を付与するようにしてみて下さい。

2010/3/12 MOTO FUJI <[E-MAIL ADDRESS DELETED]>:
> はじめまして、FUJIといいます。
>
> VB.NETを利用しているのですが、トランザクションがかからずに困っています。
> アドバイスを頂けないでしょうか。
> WebサービスからDAOのメソッドを呼び出し、データをINSERTする処理になっています。
> 外部ファイルに記述されたINSERT文を発行するのですが発行後、データの追加できるのですが、
> 2件目のデータを追加する際に、エラーを発生させるとロールバックされずに1件目のデータが
> 追加された状態となっています。※ストアドで追加を行っても同じ現象が発生しました。
> DAOのInsertDataメソッドに<Transaction()>を指定した場合は、上記のように1件目が
> 登録されると思うのですが、<Transaction()>はクラスに指定を行っているので、
> ロールバックされると思っていたのですが誤りでしょうか?
> //DAO Start
> Imports Seasar.Dao.Attrs
> Imports Seasar.Quill.Attrs
>
> <Implementation()> _
> <S2Dao()> _
>   <Transaction()> _
>   <Bean(GetType(SampleDto))> _
> Public Interface SampleDao
>
> <SqlFile()> _
> Function InsertData(ByVal InsData As SampleDto) As Boolean
>
> End Interface
>
> //DAO End
> ------------------------------------------------------------------------------------------
> //DTO Start
> Imports Seasar.Dao.Attrs
>
> Namespace Sample
>
>   Public Class SampleDto
>
> Public Property TelNumber() As String
> Get
> Return _TelNumber
> End Get
> Set(ByVal value As String)
> _TelNumber = value
> End Set
> End Property
>
> //DTO End
> ------------------------------------------------------------------------------------------
> //WEBサービス Start
> Imports System.Web
> Imports System.Web.Services
> Imports System.Web.Services.Protocols
> Imports Seasar.Quill
> Imports Seasar.Quill.Attrs
> Imports System.Security.Cryptography
> Imports System.Collections.Generic
>
> <WebService(Namespace:="http://localhost.WebService/")> _
> <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
> <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
> Public Class WebService01
> Inherits System.Web.Services.WebService
>
> Protected daoOfSample As SampleDao
> Private Function ImportData(ByVal _strTelnumber As String) As Boolean
> Dim dto(2) as SampleDto
> dto(0).TelNumber = "090-xxxx-xxxx"
> dto(1).TelNumber = "080-xxxx-xxxx"
> For i as integer = 0 To dto.Length -1
>    daoOfSample.InsertData(dto(i))
> Next
> End Sub
> //WEBサービス End
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
>


seasar-dotnet メーリングリストの案内