【发布时间】:2013-05-10 02:09:49
【问题描述】:
在下面描述的JDO中,在methodB()被执行之后(已经从methodA()调用),如果methodA()发生异常,那么methodA()和methodA()中的代码都会发生回滚。 methodB() 或只是 methodA() 如在 methodB() 提交已经发生。
注意:PersistenceManager 按需创建并存储在 ThreadLocal 中
methodA() {
PersistenceManager mgr = getPersistenceManager( );
Transaction trans;
trans = mgr.currentTransaction( );
try {
trans.begin( );
methodB();
//some delete/update code
// An exception occurs
trans.commit( );
}
catch( Exception e ) {
e.printStackTrace( );
}
finally {
if( trans.isActive( ) ) {
trans.rollback( );
}
mgr.close( );
}
}
methodB() {
PersistenceManager mgr = getPersistenceManager( );
Transaction trans;
trans = mgr.currentTransaction( );
try {
trans.begin( );
//code
trans.commit( );
}
catch( Exception e ) {
e.printStackTrace( );
}
finally {
if( trans.isActive( ) ) {
trans.rollback( );
}
mgr.close( );
}
}
【问题讨论】:
标签: transactions jdo