繁体   English   中英

在MySQL中一起使用准备语句和连接池

[英]Using Prepared Statements and Connection Pooling together in MySQL

目前,对于每个查询,都会创建并重用Prepared Statement。 我没有使用任何连接池。 C3P0是一个广泛推荐的库。

但是,由于PreparedStatement与连接相关联。 在池化环境中,连接将返回到池中,从而有效地使PreparedStatement无法使用。 我对这个结论是否正确? 有没有办法一起使用Prepared Statement和连接池?

更新:这是独立的应用程序。 所以,我不能只使用框架来获得正确的连接池。

这取决于您使用的池化机制。 大多数Java EE应用程序服务器都具有连接池实现,其中有一个准备好的语句缓存以及池中的每个连接。 因此,重复使用准备好的语句以及连接。 我不知道任何具有此功能的独立池机制。

我相信如果你关闭连接,PreparedStatement将“丢失”,但只要相同的连接保持打开,相同的PreparedStatement应该是可用的。 您应该使用JdbcTemplate查看Spring为您执行此操作。 它将抽象掉所有这些,所以你不必担心它。 只需传递一个DataSource就可以了。

以下是如何将c3p0用作DataSource对象: http//forum.springframework.org/showthread.php ?t = 13078

然后,您可以创建一个JdbcTemplate bean并将数据源作为构造函数参数传入,然后将JdbcTemplate注入您正在使用的任何DAO对象中。

当我从“高性能MySQL”中看到这些材料时 ,它让我觉得你必须对你的MySQL配置做一些事情,超出你在Java中设置的任何东西。 你有没有编辑过你的my.cnf文件?

另外,你是否看过关于这个主题的其他SO问题

编辑:Spring是一个框架,可以帮助池,非常适合独立的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM