代码之家  ›  专栏  ›  技术社区  ›  Shashikant Kore

在MySQL中使用准备好的语句和连接池

  •  3
  • Shashikant Kore  · 技术社区  · 16 年前

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

    但是,作为一份准备好的声明,它与一种联系紧密相连。在池环境中,连接被返回到池中,这实际上使PreparedStatement不可用。我的结论正确吗?有没有办法将预处理语句和连接池一起使用?

    更新:这是一个独立的应用程序。所以,我不能仅仅使用一个框架来实现连接池。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Arjan Tijms Mike Van    12 年前

    这取决于您使用的池机制。大多数JavaEE应用服务器都有连接池实现,其中池中的每个连接都有一个准备好的语句缓存。因此,准备好的语句和连接都被重用。我不知道有哪种独立的池机制具有这种功能。

        2
  •  0
  •   Alex Beardsley    16 年前

    我相信如果你关闭连接,PreparedStatement将“丢失”,但只要相同的连接保持打开状态,相同的PreparedStatement就应该可用。您应该看看Spring,使用JdbcTemplate为您实现这一点。它会把所有这些都抽象掉,这样你就不用担心了。只要给它一个数据源,你就可以开始了。

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

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

        3
  •  0
  •   Community CDub    8 年前

    当我看到 this material 从“高性能MySQL”开始,它让我觉得你必须对你的MySQL配置做一些事情,而不仅仅是在Java中设置的。你编辑过你的my吗。cnf文件?

    还有,你看过 other SO questions 关于这个话题?

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