You can create a string that has an anonymous PL/SQL block that runs both update statements in the same transaction, and use that string with a PreparedStatement to set bind variables.
I know you said you want to 1) fill out bind variables for A, 2) execute A, 3) fill out bind variables for B, 4) execute B, 5) commit transaction.
My suggestions doesn't exactly follow that order. I'm suggesting that you have one big PL/SQL anonymous block that contains the statements for A and B. You'd fill out all bind variables for the entire block before executing. You can control whether to commit / rollback or whatever other logic you want (including more complex exception handling) from within the PL/SQL block.
This is basically like having a stored procedure that you don't store in the database. It's honestly my preferred method for things that don't need to be available outside the context of some single bit of code. So your business logic isn't kept in the database (which many will argue for hours over whether that's a good thing or bad thing; I personally hate business logic at the database level, but it depends on your project).
Also, look at documentation for Statement, which PreparedStatement inherits from.
http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html
You can call clearBatch and addBatch if you really want to use the same PreparedStatement object to execute one SQL statement, then swap out the SQL and execute a completely different statement.
PREPARE
during bean instantiation - don't do it on every service call. – Clockwork-Muse