[Seasar-user:21059] Re: [tutorial][S2JDBC]挿入をコミットしたいのですが

鈴木正則 [E-MAIL ADDRESS DELETED]
2011年 10月 11日 (火) 09:48:27 JST


お世話になります。鈴木です。

DBをオラクル11g XE に変更してみたら、インサートしたデータも見えるようになりました。

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

----- Original Message ----- 
From: "Koichi Kobayashi" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Friday, October 07, 2011 5:01 PM
Subject: [Seasar-user:21054] Re: [tutorial][S2JDBC]挿入をコミットしたいのですが


> 小林 (koichik) です.
> 
> s2jdbc-tutorial では HSQLDB の初期データが src/test/resources/data/
> 以下に用意されていて、S2Container の初期化時に毎回それを読み込んで
> いるので、次に実行したときは前にインサートしたデータが存在しない
> だけだと思います。
> 
> HSQLDB の終了時にデータを保存するように設定を変更するか、
> 別プロセスとして実行 (他の DBMS でも構いません) すれば、
> インサートしたデータも見えると思います。
> 
> 
> Date: Fri, 7 Oct 2011 16:47:47 +0900
> From: 鈴木正則 <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:21053] [tutorial][S2JDBC]挿入をコミットしたいのですが
> 
>> お世話になります。鈴木です。
>> 
>> Seasar2入門の本を見ながら
>> s2jdbc-tutorial のエンティティ挿入のサンプルについて、実行しています。
>> InsertMain.javaを実行すると、最後にロールバックされます。
>> 
>> この挿入をコミットしようと、rollback ⇒ commit に変更しました。下記★。
>> 
>> コンソールには、下記のように、コミットしましたのメッセージが出るのですが
>> 2回、3回と繰返し実行しても、idは15のままです。
>> 15、16、17と増えていく期待をしたのですが。
>> 
>> また、GetResultListMain.javaで、一覧を見ると、追加したはずの"test"はありません。
>> 
>> 初歩的な質問ですが、コミットについて勘違いをしているでしょうか?
>> 
>> 【コンソール】
>> DEBUG 2011-10-07 16:12:09,703 [main] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1317971529703/0, BranchId=]
>> DEBUG 2011-10-07 16:12:10,125 [main] 物理的なコネクションを取得しました
>> DEBUG 2011-10-07 16:12:10,125 [main] 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1317971529703/0, BranchId=]
>> DEBUG 2011-10-07 16:12:10,125 [main] insert into EMPLOYEE (ID, NAME, SALARY, DEPARTMENT_ID, ADDRESS_ID, VERSION) values (null, 'test', null, null, null, 1)
>> DEBUG 2011-10-07 16:12:10,156 [main] call identity()
>> 15
>> DEBUG 2011-10-07 16:12:10,171 [main] トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1317971529703/0, BranchId=]
>> DEBUG 2011-10-07 16:12:10,171 [main] 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1317971529703/0, BranchId=]
>> DEBUG 2011-10-07 16:12:10,171 [main] 物理的なコネクションを閉じました
>> 
>> 
>> 【修正したソース】
>> package tutorial.main;
>> 
>> import javax.transaction.UserTransaction;
>> 
>> import org.seasar.extension.jdbc.JdbcManager;
>> import org.seasar.framework.container.SingletonS2Container;
>> import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
>> 
>> import tutorial.entity.Employee;
>> 
>> public class InsertMain {
>> 
>>     public static void main(String[] args) throws Exception {
>>         SingletonS2ContainerFactory.init();
>>         try {
>>             JdbcManager jdbcManager = SingletonS2Container
>>                 .getComponent(JdbcManager.class);
>>             UserTransaction ut = SingletonS2Container
>>                 .getComponent(UserTransaction.class);
>>             ut.begin();
>>             try {
>>                 test(jdbcManager);
>>             } finally {
>>                 //ut.rollback();
>>                 ut.commit(); //★修正箇所
>>             }
>>         } finally {
>>             SingletonS2ContainerFactory.destroy();
>>         }
>>     }
>> 
>>     public static void test(JdbcManager jdbcManager) {
>>         Employee emp = new Employee();
>>         emp.name = "test";
>>         jdbcManager.insert(emp).execute();
>>         System.out.println(emp.id);
>>     }
>> }
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> --
> {
>  name: "Koichi Kobayashi",
>  mail: "[E-MAIL ADDRESS DELETED]",
>  blog: "http://d.hatena.ne.jp/koichik/",
>  twitter: "@koichik"
> }
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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