java - 缓存 JDBC 连接

标签 java mysql tomcat servlets jdbc

我有一个非常依赖数据库的小型电子商务应用程序。我已经看到它的一些性能问题,主要是在建立与数据库的连接时。我不是 DBA,也不是任何其他深入的数据库知识 - 但我知道缓存连接而不是一直建立新连接是有意义的。

下面是我获取连接的方法:

public Connection getConnection() throws SQLException, ClassNotFoundException  {
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://182.31.456.32:3306/"+database+"",""+username+"",""+password+""); 
   // stm=con.createStatement(); 
    return con;
}

我的问题是 - 如何轻松缓存当前连接并重用它而不是使用 JDBC/Java 创建新连接?

谢谢。

最佳答案

在您有一个相当大的电子商务应用程序的情况下,您通常不会按照您在代码中显示的方式对数据库连接进行编码。

我们使用连接池。

我想,您的电子商务应用程序将部署在某个应用程序服务器中,使用该服务器的连接池设施来管理您的数据库连接。

如果它是没有服务器的应用程序,您可以使用 C3P0 等连接池 API 之一来显式编码池功能。

我猜你所谓的连接缓存基本上是要求实现一个Singleton。互联网上会有很多关于如何实现单例的例子,但你不应该在代码中关闭连接。

有一个叫做connection-timeout 时间的东西,如果使用单连接缓存解决方案,你需要正确设置它。

希望对您有所帮助!!

关于java - 缓存 JDBC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39550155/

相关文章:

mysql - 在具有相同查询的 MySQl 中使用 And & OR 条件

php - 在 while 循环中,结果错误

java - 以前工作的 Java servlet 现在在 'Clean' 之后不再工作 - Tomcat v7.0 和 Eclipse

java - 静态初始化与动态初始化

java - Gradle 构建错误地失败,因为 "@Override method does not override method from superclass"

java - 仅从文本字段获取特定信息

tomcat - 通过 JMX 监控 Tomcat

java - Eclipse RCP 中应用程序范围的资源位置在哪里?

mysql - 如何在mysql命令行中垂直显示记录?

tomcat - 对 solaris 上托管的 Web 应用程序使用 Windows 网络域身份验证