使用 Java servlet 时何时打开以及何时关闭 mysql 连接?

Posted

技术标签:

【中文标题】使用 Java servlet 时何时打开以及何时关闭 mysql 连接?【英文标题】:When to open and when to close the mysql connection while using Java servlets? 【发布时间】:2011-12-01 11:09:48 【问题描述】:

init方法中打开连接,在destroy方法中关闭是否可以?还有什么是打开与 mysql 数据库的连接的最佳方式。目前我正在使用这个:

Class.forName("com.mysql.jdbc.Driver");

Connection connect = DriverManager.getConnection("jdbc:mysql://" + ipaddress + "?user=" + user + "&password=" + pass);

但我在某处读到这效率低下,我应该使用连接池。该怎么做?

【问题讨论】:

【参考方案1】:

我强烈建议使用连接池,无论是明确的(例如c3p0)还是由您的 servlet 容器提供的。

在需要时打开您的数据库连接,然后尽快关闭它 - 连接池将负责真正的网络连接。

除非您这样做,否则您最终会为整个应用程序建立一个连接 - 这意味着您一次只能处理一个查询,并且您的所有代码都需要围绕数据库查询进行同步。您肯定希望多个完全独立的查询能够同时执行吗?您无法通过单个连接来执行此操作。

至于在配置了适当的连接池后打开连接的最佳方式——您很可能最终还是使用DriverManager.getConnection(),但直接指定连接池而不是mysql。

【讨论】:

以上是关于使用 Java servlet 时何时打开以及何时关闭 mysql 连接?的主要内容,如果未能解决你的问题,请参考以下文章

Java 泛型类型擦除:何时以及发生啥?

实际示例何时使用抽象类以及何时使用 Java 8 引入的接口(默认和静态方法)[重复]

何时以及为啥要使用 Java 同步? [复制]

如何知道应用程序何时收到通知以及用户何时在iOS中点击通知

何时显示对话框[重复]

何时以及如何将 java 类加载器标记为垃圾收集?