现在写一个项目,有一些操作要么都完成,要么都不完成,正好用上事务。
但我查了一下,最简单是用在SQL上的Connection的事务。
我想问问,有没有用在一般情况下的事务的用法。
我查看了一下API,在J2EE上有有关说明,但因为是全英文,看不太懂,是一个javax.transaction接口。
而对接口,我总是掌握得不好,所以就不知道怎么实现了。
例如下面的代码:int i=0,j=3;
try{
beginTransaction;
i++;
j+=2;
commit;
}catch(Exception e){
rollback;
}请求告知的类和用法的相关代码,谢谢!
但我查了一下,最简单是用在SQL上的Connection的事务。
我想问问,有没有用在一般情况下的事务的用法。
我查看了一下API,在J2EE上有有关说明,但因为是全英文,看不太懂,是一个javax.transaction接口。
而对接口,我总是掌握得不好,所以就不知道怎么实现了。
例如下面的代码:int i=0,j=3;
try{
beginTransaction;
i++;
j+=2;
commit;
}catch(Exception e){
rollback;
}请求告知的类和用法的相关代码,谢谢!
楼主【siu5】截止到2008-06-28 01:00:30的历史汇总数据(不包括此帖):
发帖数:26 发帖分:855
结贴数:21 结贴分:755
未结数:5 未结分:100
结贴率:80.77 % 结分率:88.30 %
楼主加油
我自己写了一个继承TransactionManager的类,然后用Main方法测试。但结果却是不回滚的。package biz;import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.InvalidTransactionException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;public class TestTM implements TransactionManager { public void begin() throws NotSupportedException, SystemException {
// TODO Auto-generated method stub } public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException,
IllegalStateException, SystemException {
// TODO Auto-generated method stub } public void rollback() throws IllegalStateException, SecurityException,
SystemException {
// TODO Auto-generated method stub } public static void main(String [] ar) throws IllegalStateException, SystemException{
int a=3,b=1,c=12,d=20;
TestTM tm=new TestTM();
try{
tm.begin();
a=9*a;
b=b-1;
c=c/b;
d=d/2;
tm.commit();
}catch(Exception e){
e.printStackTrace();
tm.rollback();
}
System.out.println("a, b, c, d="+a+" "+b+" "+c+" "+d);
}
}本来,如果会回滚的话,答案应该是:3 1 12 20,
但运行之后,答案是:27 0 12 20。
请问哪里不对。另外,这段代码用JCreator来写的话(不包括第一句),会显示“找不到符号”。请问是什么意思?要怎样修改?
是不是只能用回Connection的那个那些方法了?