You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@turbine.apache.org by Rodney Schneider <rl...@arcalink.com> on 2002/04/03 02:56:22 UTC
Re: Sharing one connection across objects
> "Nikhil G. Daddikar" wrote:
> > Hi Folks,
> >
> > We are moving to using turbine from our home-grown "framework" and have
> > been quite pleased.
> >
> > However I have a few questions. Here is one of them:
> >
> > While handling a web request, a bunch of java objects do database
> > calls over jdbc. I want to do this in a transaction => use the same
> > connection in all the jdbc calls.
> >
> > Currently we have a per-web-request context object that has the
> > dbconnection object in it. RunData doesn't seem to have it. What is the
> > 'turbine recommended' way?
Are you using Torque and Peers? If so, you will notice in the generated
classes that you can pass in a DBConnection object to all methods that access
your database. You will also notice that the methods in BasePeer (doSelect,
doInsert, doUpdate, doDelete) handle transactions for you by calling
transaction handling methods in BasePeer (beginTransaction(),
commitTransaction() and rollBackTransaction()).
If you are going to implement your own RunData to provide a per-web-request
DBConnection object in it, you will need to do the transaction handling
yourself. See the following code for an example of how to use the Turbine
connection pool...
----------
import java.sql.Connection;
import org.apache.turbine.services.db.TurbineDB;
import org.apache.turbine.util.db.pool.DBConnection;
try {
// get a connection from the pool
DBConnection dbConn = TurbineDB.getConnection();
// start the transaction
dbConn.setAutoCommit(false);
// the following line may be necessary if you are not using Torque...
Connection connection = dbConn.getConnection();
...
// perform your database calls here
...
// commit the transaction
dbConn.commit();
dbConn.setAutoCommit(true);
} catch (Exception e) {
// rollback the transaction
dbConn.rollback();
dbConn.setAutoCommit(true);
}
finally {
// release the connection back to the pool
try {
TurbineDB.releaseConnection(db);
} catch (Exception ignored) {}
}
----------
Hope this helps,
-- Rodney
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>