1

我有一个用例,我使用 memcache 缓存数据库中的某些结果。我使用查询本身作为键,值将是CachedRowSetImpl序列化结果集的类型。为了形成查询,我需要使用PreparedStatementwhich 反过来需要一个到数据库的连接对象。这违背了缓存的全部目的,因为一半以上的时间都花在了建立连接上。有什么解决方法吗?还是我必须使用另一种方法来缓存结果?

4

1 回答 1

0

为避免每次都建立连接,请使用连接池,例如c3p0。您将连接池配置为使用 Postgres、用户名 swaldman 和 passwordComboPooledDataSource

// in constructor
cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver            
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("swaldman");                                  
cpds.setPassword("test-password");                                  

当您需要 JDBC 连接时,只需使用:

Connection connection = cpds.getConnection();

还有其他连接池,例如DBCP,它们的设置方式类似。

于 2013-04-11T13:10:13.837 回答