Hello,
I have a question about a transaction scenario I'm doing...I see
problems when trying to use
startTransaction()/commitTransaction()/endTransaction with JDBC data
source. I'm using Oracle 9.2 client libraries, and this is with
iBATIS-2.2.0.
Here's my code pattern--I have two Daos involved--one "Foo" and one
"Bar". I'm transacting Foo here. (I've tried transacting both and get
the same result, too--so it seems to be relating to the FooDao
transaction somehow)
DaoManager dm = FooDaoManager.getDaoManager();
try
{
dm.startTransaction();
op1UsingFooDao();
logger.info("1");
op2UsingFooDao();
logger.info("2");
op3UsingBarDao(); //throws SQLException when the Tx
code is off, hangs here when using Tx
logger.info("3"); //never gets here...
dm.commitTransaction();
}
finally
{
logger.info("Inside finally block");
dm.endTransaction();
}
Output with no transaction code (application terminates):
1
2
Inside finally block
Output with transaction code present (application hangs):
1
2
I expected that the transaction would roll back when an exception was
encountered by triggering the finally code. However, since it hangs, I
don't know where or why it hung in op3UsingBarDao()...?
What am I doing wrong in this scenario and how should I correctly
address this? This scenario is consistent with the documentation, but
the docs don't cover multiple DaoManager transactions...
Thanks,
-Dave