One last item.. I can see using ther finally's as we discussed, however I can also see using the catches if I want to handle different exceptions in different ways.
If I don't use them, I will have no idea what error messages to log. Don't you have the same issue? Jim --- Thomas Fischer <[EMAIL PROTECTED]> wrote: > It helps if an error occurs in the doStuff() part, > because the transaction > is closed properly. As a further benefit, all > updates/inserts since the > last commit/rollback (which is hopefully at the > point where you last > returned the connection to the pool) are reverted. > If no errors occur, the rollback does not hurt, > because it is after the > commit. > > By the way, I just committed the documentation page > about transactions and > connections. See > > http://svn.apache.org/viewcvs.cgi/db/torque/runtime/trunk/xdocs/reference/connections-transactions.xml?view=markup > > Thomas > > On Mon, 10 Apr 2006, Jim Caserta wrote: > > > Exactly how does that rollback help at that point > of > > the code Thomas? > > > > --- Thomas Fischer <[EMAIL PROTECTED]> wrote: > > > >> The code now looks good. It's fine to rollback > after > >> you do the commit. > >> > >> Thomas > >> > >> On Mon, 10 Apr 2006, Jim Caserta wrote: > >> > >>> So if I'm using the following code below, > >>> My question is: > >>> Even if the connection is fine and the database > >> logic > >>> does it's stuff correctly (Do Stuff).. > >>> And the connection is NOT closed. It's ok to do > >> the > >>> "rollback" since the commit worked fine also. > >> correct? > >>> > >>> Connection dbConn = null; > >>> try { > >>> dbConn = > >>> Torque.getConnection("db2.torque.environment"); > >>> ////Do Stuff > >>> dbConn.commit(); > >>> } > >>> finally { > >>> if (dbConn == null) { > >>> //Connection error logic > >>> } > >>> if (!dbConn.isClosed()) { > >>> dbConn.rollback(); > >>> dbConn.close(); > >>> } > >>> } > >>> > >>> --- Thomas Fischer <[EMAIL PROTECTED]> > wrote: > >>> > >>>> > >>>> Jim Caserta <[EMAIL PROTECTED]> schrieb am > >>>> 10.04.2006 17:40:05: > >>>> > >>>>> Sorry about the confusion. I meant using > >>>>> Torque.getConnection() and dbConn.close() > >> instead > >>>> of > >>>>> Transaction.begin().. > >>>> > >>>> For any DB which supports transactions: _Make > >> sure_ > >>>> that the connection is > >>>> in autocommit mode or use Transaction.begin and > >>>> Transaction.commit() or do > >>>> both. If you do not commit/rollback and are not > >> in > >>>> autocommit mode you can > >>>> run into ugly trouble (e.g. if the transaction > >>>> serialization is read > >>>> committed, other connections will never see the > >>>> changes to the data in the > >>>> uncommitted transaction and the like). > >>>> > >>>>> And if iI was. the following would work well? > >>>>> > >>>>> > >>>>> Connection dbConn = null; > >>>>> try { > >>>>> // get a connection from the pool > >>>>> dbConn = > >>>>> Torque.getConnection(db2.torque.environment); > >>>>> ////Do Stuff > >>>>> //Commit the transaction > >>>>> dbConn.commit(); > >>>>> } > >>>>> finally { > >>>>> if (!dbConn.isClosed()) { > >>>>> // some error occurred, try to > rollback > >>>> and return > >>>>> connection to the pool > >>>>> dbConn.close(); > >>>>> dbConn.rollback(); //Is this needed? > >>>>> } > >>>>> } > >>>> > >>>> This is similar to an earlier version I used > some > >>>> time ago. The problem is > >>>> it would throw a NullPointerException in the > >> finally > >>>> block if > >>>> Torque.getConnection() fails. Also, you should > >>>> rollback() before you > >>>> close(). > >>>> > >>>> Whatever code you use in the end, make sure > (i.e. > >>>> _test_) that an error in > >>>> retrieving/working with the connection is > handled > >>>> correctly. > >>>> > >>>> Thomas > >>>> > >>>> > >>>> > >>> > >> > > > --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: > >>>> [EMAIL PROTECTED] > >>>> For additional commands, e-mail: > >>>> [EMAIL PROTECTED] > >>>> > >>>> > >>> > >>> > >>> > __________________________________________________ > >>> Do You Yahoo!? > >>> Tired of spam? Yahoo! Mail has the best spam > >> protection around > >>> http://mail.yahoo.com > >>> > >>> > >> > > > --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: > >> [EMAIL PROTECTED] > >>> For additional commands, e-mail: > >> [EMAIL PROTECTED] > >>> > >>> > >> > >> > > > --------------------------------------------------------------------- > >> To unsubscribe, e-mail: > >> [EMAIL PROTECTED] > >> For additional commands, e-mail: > >> [EMAIL PROTECTED] > >> > >> > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
