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