Tomcat connection pooling with prepared statement cache

connection-pooling, java, jdbc, tomcat

Solution

Tomcat's (fairly) new jdbc-pool does have a statement cache, too. You can enable and configure it using a `JDBC interceptor`, which is set as a JDBC property during pool creation. Please have a look at the documentation for more information and which configuration possibilities exist.

It's basically done this way:

      PoolProperties p = new PoolProperties();
      p.setUrl("jdbc:your-jdbc-url");
      p.setDriverClassName("your.jdbc.driver.class");
      p.setUsername("user");
      p.setPassword("password");
      p.setJdbcInterceptors(
        "org.apache.tomcat.jdbc.pool.interceptor.StatementCache");
      DataSource datasource = new DataSource();
      datasource.setPoolProperties(p);

Problem

Having upgraded from DBCP connection pooling to Tomcat's own implementation (based on the excellent comparison here); I'm a little confused as to why they've dropped these 2 properties, while keeping everything else: ``` poolPreparedStatements="true" maxOpenPreparedStatements="10000" ``` Does this mean that prepared statement pooling is not supported in this implementation? And does each connection maintain its own pool of prepared statements by default? I've spent a considerable time researching this and have found no clear answer! Thanks for your time.

Original source