[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 メーリングリストの案内