目前,对于每个查询,都会创建并重用Prepared Statement。我没有使用任何连接池。 C3P0是一个广泛推荐的库。
但是,由于PreparedStatement与连接相关联。在池化环境中,连接将返回到池中,从而有效地使PreparedStatement无法使用。我对这个结论是否正确?有没有办法一起使用Prepared Statement和连接池?
更新:这是独立的应用程序。所以,我不能仅仅使用框架来获得正确的连接池。
答案 0 :(得分:1)
这取决于您使用的池化机制。大多数Java EE应用程序服务器都具有连接池实现,其中有一个准备好的语句缓存以及池中的每个连接。因此,重复使用准备好的语句以及连接。我不知道任何具有此功能的独立池机制。
答案 1 :(得分:0)
我相信如果您关闭连接,PreparedStatement将“丢失”,但只要相同的连接保持打开,相同的PreparedStatement应该可用。您应该使用JdbcTemplate查看Spring为您执行此操作。它将抽象掉所有这些,所以你不必担心它。只需传递一个DataSource就可以了。
以下是如何将c3p0用作DataSource对象:http://forum.springframework.org/showthread.php?t=13078
然后,您可以创建一个JdbcTemplate bean并将数据源作为构造函数参数传入,然后将JdbcTemplate注入到您正在使用的任何DAO对象中。
答案 2 :(得分:0)
当我从“高性能MySQL”中看到this material时,它让我觉得你必须对你的MySQL配置做一些事情,超出你在Java中设置的任何东西。你编辑过my.cnf文件了吗?
另外,您是否看过other SO questions主题?
编辑:Spring是一个框架,可以帮助完成非常适合独立应用程序的池化。