In many situations, such as web applications, there will be a
        large number of small database transactions. When this is the
        case, it usually makes sense to create a pool of database
        connections available for web requests as needed. Although MySQL
        does not spawn an extra process when a connection is made, there
        is still a small amount of overhead to create and set up the
        connection. Pooling of connections also alleviates problems such
        as collecting large amounts of sockets in the
        TIME_WAIT state.
      
        Setting up pooling of MySQL connections with Spring is as simple
        as changing the data source configuration in the application
        context. There are a number of configurations that we can use.
        The first example is based on the
        Jakarta
        Commons DBCP library. The example below replaces the
        source configuration that was based on
        DriverManagerDataSource with DBCP's
        BasicDataSource.
      
<bean id="dataSource" destroy-method="close"
  class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${db.driver}"/>
    <property name="url" value="${db.jdbcurl}"/>
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
    <property name="initialSize" value="3"/>
</bean>
        The configuration of the two solutions is very similar. The
        difference is that DBCP will pool connections to the database
        instead of creating a new connection every time one is
        requested. We have also set a parameter here called
        initialSize. This tells DBCP that we want
        three connections in the pool when it is created.