java中的预备语句

时间:2013-04-11 12:57:52

标签: java performance jdbc memcached

我有一个用例,我使用memcache缓存来自DB的某些结果。我使用查询本身作为键,值将是类型CachedRowSetImpl,它序列化结果集。为了形成查询,我需要使用PreparedStatement,而{{1}}又需要一个连接对象到数据库。这违背了缓存的全部目的,因为花费了超过一半的时间来建立连接。这有什么工作吗?或者我是否必须使用其他方法来缓存结果?

1 个答案:

答案 0 :(得分: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,它们以类似的方式设置。