已从 DBCP 连接池升级到 Tomcat 自己的实现(基于出色的比较 here );我有点困惑为什么他们放弃了这两个属性,同时保留了其他所有属性:
poolPreparedStatements="true"
maxOpenPreparedStatements="10000"
这是否意味着此实现不支持准备语句池?每个连接是否默认维护自己的准备语句池?
我花了相当多的时间研究这个问题,但没有找到明确的答案!
感谢您的宝贵时间。
最佳答案
Tomcat 的(相当)新的 jdbc-pool 也有语句缓存。
您可以使用 JDBC 拦截器
启用和配置它,该拦截器在池创建期间设置为JDBC 属性。
请有look at the documentation了解更多信息以及存在哪些配置可能性。
基本上是这样做的:
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);
关于java - 具有准备好的语句缓存的 Tomcat 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527791/