[Seasar-user:8081] Re: [Seasar]Seasar2.4系でトランザクションを扱うための設定

kondo [E-MAIL ADDRESS DELETED]
2007年 6月 5日 (火) 18:00:28 JST


近藤です。

>> <component name="〜〜Customizer"
>>     class="org.seasar.framework.container.customizer.CustomizerChain">
>>   <initMethod name="addCustomizer">
>>     <arg>{インターセプタ}</arg>
>>   </initMethod>
>> </component>
> 
> {インターセプタ} のところはインターセプタではなく,
> 「カスタマイザ」です.

「カスタマイザ」と呼ぶのですね。失礼しました。
「カスタマイザ」の実体は確認致しました。私の方でも調べてみたところ、
カスタマイザの定義内でproperty nameでpointcutを指定できることがわか
りました。


>> もうひとつだけ教えてください。この構文の場合、でpointcutを指定するには
>> どのように記述すればよろしいのでしょうか?
> 
> AspectCustomizer クラスの pointcut プロパティで
> 指定します.
> std-customizer.dicon に定義されている
> 標準コンポーネントにはポイントカットは指定されて
> いないので,それらを使うことはできず,自前で
> 定義することになります.
> 
> <component name="logicCustomizer"
>     class="org.seasar.framework.container.customizer.CustomizerChain">
>   <initMethod name="addCustomizer">
>     <arg>
>       <component name="requiredTxCustomizer"
>           class="org.seasar.framework.container.customizer.AspectCustomizer">
>         <property name="interceptorName">"j2ee.requiredTx"</property>
>         <property name="pointcut">insert*,update*,delete*</property>
>       </component>
>   </initMethod>
> </component>
> となります.

カスタマイザの実体を直接定義もできるのですね。
私の方では、std-customizer.diconをapp.diconと同じ場所に別途保存して、
そちらの内部に<property name="pointcut">"insert*,update*,delete*"</property>
を記述して動作確認させました。動作はしましたが、同名ファイルが複数箇所に
できることになりますので、あまりよい対応とはいえないかもしれません。


> 個人的には照会系でもトランザクション境界を設定すべきだと
> 思いますが.

「設定すべき」との事ですが、よろしければ御意見を頂けないでしょうか?
私の認識では、"トランザクションは更新処理に対して"というイメージがある
為、更新系のメソッドに対してのみかけるものだと思っています。
※DBでいうところの"トランザクション"のイメージです。
私の方で開発しておりますLogicクラスには、対DB用のread,insert,update,
deleteの他にも、複雑な計算処理等はLogicクラスに実装しようと思っており
ましたので、そういったものにまでトランザクションが反応させなくても
いいのではないかと思っておりますので、部分的な対応にしようとしています。







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