[Seasar-user:5511] Re: S2JDBCのバッチ更新処理について

藤本 正人 [E-MAIL ADDRESS DELETED]
2006年 12月 18日 (月) 09:19:39 JST


せとあずささん

返事が遅くなってしまいました。
いただいたコードだと正常に動作しました。
とりあえずこの方法で回避することにします。

ありがとうございました。

+-------------- 返信元のメッセージ 2006/12/15(金) --------------
|From:     Seto Azusa <[E-MAIL ADDRESS DELETED]>
|Reply-To: [E-MAIL ADDRESS DELETED]
|To:       [E-MAIL ADDRESS DELETED]
|Subject:  [Seasar-user:5502] Re: S2JDBCのバッチ更新処理について
|
|
|せとあずさです。
|
|On Thu, 14 Dec 2006 20:04:53 +0900
|藤本 正人 <[E-MAIL ADDRESS DELETED]> wrote:
|
|> S2JDBCのバッチ更新を使用して複数行のレコードをinsertしています。
|> diconファイルにBasicBatchHandlerを1つだけ定義した状態だと正常に動作する
|> のですが、複数のバッチ更新処理を定義すると
|> TooManyRegistrationRuntimeExceptionが発生してしまいます。
|> 複数のバッチ更新処理を定義する方法がありましたら、教えてください。
|
|都合によりSeasar2.3系で検証していますが、以下のような例でどうでしょう?
|# DBはS2Dao-CodeGenのを使ってます。
|
|----------------------------------------
|テストプログラム
|----------------------------------------
|package sample;
|
|import java.util.ArrayList;
|import java.util.List;
|
|import org.seasar.extension.jdbc.BatchHandler;
|import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
|
|public class Test {
|
|   private List handlerlist;
|
|   public void setHandlerList(List list) {
|       this.handlerlist = list;
|   }
|
|   public void test() {
|
|       BatchHandler handler = (BatchHandler) handlerlist.get(0);
|       // 10レコード追加
|       List list = new ArrayList();
|       for (int j = 0; j < 10; j++) {
|           Object obj = new Object[] { new Integer(j), new Integer(j + 1) };
|           list.add(obj);
|       }
|       handler.execute(list);
|
|       handler = (BatchHandler) handlerlist.get(1);
|       // 10レコード追加
|       list = new ArrayList();
|       for (int j = 11; j < 20; j++) {
|           Object obj = new Object[] { new Integer(j), new Integer(j + 1) };
|           list.add(obj);
|       }
|       handler.execute(list);
|   }
|
|   public static void main(String[] args) {
|       SingletonS2ContainerFactory.init();
|       Test test = (Test) SingletonS2ContainerFactory.getContainer()
|               .getComponent("test");
|       test.test();
|   }
|}
|
|----------------------------------------
|query.dicon
|----------------------------------------
|<?xml version="1.0" encoding="UTF-8"?>
|<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
|    "http://www.seasar.org/dtd/components23.dtd">
|<components>
|  <include path="j2ee.dicon"/>
|
|  <component name="handlerList" class="java.util.ArrayList">
|    <initMethod name="add" >
|      <arg>insertBumonHandler</arg>
|    </initMethod>
|    <initMethod name="add" >
|      <arg>insertBumonHandler2</arg>
|    </initMethod>
|  </component>
|
|  <component name="insertBumonHandler"
|    class="org.seasar.extension.jdbc.impl.BasicBatchHandler">
|    <property name="batchSize">1000</property>
|    <property name="sql"><![CDATA["
|    INSERT INTO EMP
|    ( EMPNO
|    , MGR
|    )
|    VALUES
|    ( ?
|    , ?
|    ) 
|    "]]></property>
|  </component>
|
|  <component name="insertBumonHandler2"
|    class="org.seasar.extension.jdbc.impl.BasicBatchHandler">
|    <property name="batchSize">1000</property>
|    <property name="sql"><![CDATA["
|    INSERT INTO EMP
|    ( EMPNO
|    , MGR
|    )
|    VALUES
|    ( ?
|    , ?
|    ) 
|    "]]></property>
|  </component>
|</components>
|
|-- 
|せとあずさ
|[E-MAIL ADDRESS DELETED]
|http://www.fieldnotes.jp/d/
|
|_______________________________________________
|Seasar-user mailing list
|[E-MAIL ADDRESS DELETED]
|https://ml.seasar.org/mailman/listinfo/seasar-user
+---------------------------------------------------------------
---
Masato FUJIMOTO



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