我正在使用我在网上找到的以下代码(这里)作为JTA事务处理的示例:
// Get a UserTransaction
UserTransaction txn = new InitialContext().lookup("java:comp/UserTransaction");
try {
System.out.println("Starting top-level transaction.");
txn.begin();
stmtx = conn.createStatement(); // will be a tx-statement
stmtx.executeUpdate("INSERT INTO test_table (a, b) VALUES (1,2)");
stmtx.executeUpdate("INSERT INTO test_table2 (a, b) VALUES (3,4)");
System.out.print("\nNow attempting to rollback changes.");
txn.rollback();
}总的来说,我有几个关于JTA的问题,这些问题都是从上面的例子中得出的:
txn.begin,然后回滚的全部意思是能够(非常地)回滚两个SQL语句,对吗?txn.begin()时会发生什么?我从JTA中了解到,它应该通过TransactionManager实例使用一个调用线程注册这个事务。TM是如何与UserTransaction连接的?最后,txn如何意识到我们对DB进行了两次修改,并能够与DB对话以回滚?我们没有向它注册任何ResourceManager,所以它不应该知道有任何资源在起作用.我有点迷路了,所以任何信息都会很感激的.问题3最让我烦恼。
发布于 2013-06-05 11:51:33
发布于 2013-06-05 11:58:13
在交易方面有很多需要学习的地方,但也许我可以给你一个先机:
我建议好好阅读一下SQL (例如头第一SQL),并查看Java 6教程。
https://stackoverflow.com/questions/16938978
复制相似问题