Connections made via a DataSource object that is implemented to work with a middle tier connection pool manager will participate in connection pooling. This can improve performance dramatically because creating new connections is very expensive. Connection pooling allows a connection to be used and reused, thus reducing the number of new connections that need to be created.
Connection pooling is totally transparent. It is done automatically in the middle tier of a J2EE Environment, and hence from an application’s viewpoint, no change in code is required. An application simply uses the DataSource.getConnection() method to get the pooled connection and uses it the same way it uses any Connection object.