[Seasar-user:21053] [tutorial][S2JDBC]挿入をコミットしたいのですが
鈴木正則
[E-MAIL ADDRESS DELETED]
2011年 10月 7日 (金) 16:47:47 JST
お世話になります。鈴木です。
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 メーリングリストの案内