2013-04-11 111 views
1

我有一个用例,我使用memcache来缓存来自数据库的某些结果。我使用查询本身作为键,值将是CachedRowSetImpl类型的序列化结果集。为了形成查询,我需要使用PreparedStatement,而这又需要连接对象到数据库。这超出了缓存的全部目的,因为超过一半的时间用于建立连接。有没有解决这个问题的方法?还是必须使用其他方法来缓存结果?在java中准备语句

+2

如何通过连接池或手动创建连接来获取连接? – 2013-04-11 13:00:04

+0

手动创建 – coder 2013-04-11 13:02:13

+0

好吧,现在您已经发现打开连接缓慢的罪魁祸首。 – 2013-04-11 13:03:14

回答

0

为避免每次都建立连接,请使用连接池,如c3p0。您可以配置一个连接池当你需要一个JDBC连接,只需要用就用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");         

Connection connection = cpds.getConnection(); 

还有其他的连接池,如DBCP,其中设置以类似的方式。