关于spring框架中的事务问题(急)
我现在在最外层进行了事务控制,在内层里,又使用了批次处理更新.如果出现异常的话,事务没有完全回滚.我想问的是事务是不是具有传递的性质.再就是批次处理是不是会是相对于外层事务控制来说是一个独立的事务,外层事务控制不能影响到内部?????
我现在在最外层进行了事务控制,在内层里,又使用了批次处理更新.如果出现异常的话,事务没有完全回滚.我想问的是事务是不是具有传递的性质.再就是批次处理是不是会是相对于外层事务控制来说是一个独立的事务,外层事务控制不能影响到内部?????
J2EE中事务分扁平事务和嵌套事务,只有嵌套事务才符合"对于外层事务控制来说是一个独立的事务"这个条件,否则都是处于一个事务。
Spring其实自己没有事务,它使用的是JTA,只不过提供了方面的配置,嵌套事务是最新JTA中才有,还需要JDBC3支持。
我现在是在spring中配好,在程序中进行事务控制.
(外层)如下:
public void save() throws UserException{
TransactionTemplate tran=new TransactionTemplate(txManager);
tran.execute{
new TransactionCallbackWithoutResult(){
public void doInTransactionWithoutResult(TransactionStatus arg0){
//我的操作
}
}
}
}
在"我的操作"中其中涉及到一个批处理的操作
(内层)批处理的主要代码:
getSqmMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLExcpetion{
executor.startBatch();
.....
executor.executeBatch();
}
}
请问bang这样外层与内层是不是同一个事务,如果发生异常能不能同时回滚???请指教!
如果说只有嵌套事务才符合"对于外层事务控制来说是一个独立的事务"这个条件,那么我如何
我的目的是只要出现异常,整个事务都要回滚,包括内层的批处理操作.我现在怀疑批处理操作是一个事务过程,它成功了就把事务提交了,而除批处理操作外还会有其它的操作,如果出现问题的话,在最外层的话就不起作用了.如何让最外层的事务控制也控制好批处理操作.
难道大家不能告诉我如何才能解决上面问题吗?
>目的是只要出现异常,整个事务都要回滚
这是肯定的。
至于嵌套事务还是扁平则取决你的JEE版本。
public void save() throws UserException{
TransactionTemplate tran=new TransactionTemplate(txManager);
tran.execute{
new TransactionCallbackWithoutResult(){
public void doInTransactionWithoutResult(TransactionStatus arg0){
//我的操作
getSqmMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLExcpetion{
executor.startBatch();
.....
executor.executeBatch();
}
}
}
}
}
}
不好意思我不太明白bang的j2ee版本主要是看什么的版本号。是servlet,jdk?还是什么。
我不知道代码如果直接写成上面的样子能不能知道是嵌套事务还是扁平事务.问题是现在出现了异常没有回滚。
对于事务方面我还不是知道的很多。如果bang能够提供点资料的知更好。