[case study] transaction types

■abs
commit or rollback??

■env+conditions
□operation flow

opeA→opeB→opeC

ParentBean#test(){
 opeA;
 ParentBean.childBean.test();
 opeC;→EXCEPTION!!!
}
ChildBean#test(){ opeB }

□relations

childBean -DI→ parentBean

□bean def file

<'bean id="parentBean" class="ParentBean">
 <'property name="childBean" ref="childBean"/>
<'/bean>
<'bean id="childBean" class="ChildBean"/>

□bean def file (transaction)

 <'bean id="applyTransactionAttribute"
    class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
  <'property name="properties">
  <'props>
   <'prop key="test">PROPAGATION_REQUIRED<'/prop>★
  <'/props>
 <'/property>
 <'/bean>

 <'bean id="autoProxy"
  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  <'property name="interceptorNames">
   <'list>
    <'value>applyInterceptor<'/value>
   <'/list>
  <'/property>
  <'property name="beanNames">
   <'list>
    <'value>parentBean<'/value>
    <'value>childBean<'/value>
   <'/list>
  <'/property>
 <'/bean>

■case study
PROPAGATION_REQUIRED―既存トランザクションを流用
 opeA: 新規トランザクションAを生成
 opeB: 既存トランザクションAがあるので そいつを流用
 opeC: opeA時に生成されたトランザクションAをそのまま使用
 ↓
 opeCでEXCEPTIONが発生した場合
 opeAもopeBもロールバックされる。

PROPAGATION_REQUIRES_NEW―常に新規トランザクション
 opeA: 新規トランザクションAを生成
 opeB: 新規トランザクションBを生成
    この時 トランザクションAは消える
 opeC: 新規トランザクションCを生成
    この時 トランザクションBは消える
 ↓
 opeCでEXCEPTIONが発生した場合
 opeAは トランザクションAがコミットされる前に消されるので コミットされない
 opeBは トランザクションBが無事終了するのでコミットされる
 opeCは 普通にロールバックされる
 
PPROPAGATION_NESTED―子トランザクションを利用
 [bean def file (transaction)]を変更し childBeanにはPPROPAGATION_NESTEDを指定
 opeA: 新規トランザクションAを生成
 opeB: 新規トランザクションBを生成
    この時 トランザクションAは消える
 opeC: 新規トランザクションCを生成(たぶん)
    この時 トランザクションBは消える
 ↓
 opeCでEXCEPTIONが発生した場合
 opeAは トランザクションAがコミットされる前に消されるので コミットされない
 opeBは トランザクションBが無事終了するのでコミットされる
 opeCは 普通にロールバックされる



ref:
http://8318.blog100.fc2.com/blog-entry-225.html

tag : PPROPAGATION_NESTED PROPAGATION_REQUIRES_NEW PROPAGATION_REQUIRED

2008-07-29 07:36 : __fw__spring : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud