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