【问题标题】:What is the industry standard when creating a JDBC Connection? [duplicate]创建 JDBC 连接时的行业标准是什么? [复制]
【发布时间】:2017-02-08 03:14:52
【问题描述】:

创建 JDBC 连接并关闭每个使用预准备语句的 Java 类或对存储过程的调用是否符合行业标准?在执行插入、更新和删除时,似乎有一种更有效的方法可以重用连接,而不是每次实例化类时都建立连接。

我不是在询问 Java Servlet。

感谢您提供任何反馈和资源以供审核。

【问题讨论】:

  • 使用连接池是行业标准,例如通过从 Servlet 容器获取连接,它将为您管理连接池。如果不是 Servlet,您应该为连接池使用第三方库,例如见How to establish a connection pool in JDBC?
  • 但如果不使用 servlet,您仍然可以轻松使用连接池。根据您的应用程序的功能以及涉及的连接数量和频率,您需要确定这是否值得做。 (但通常是)

标签: java jdbc


【解决方案1】:

通常应用程序使用 DataSource 提供的连接轮询。您不必为此运行应用程序服务器,甚至不必运行 servlet 容器。只需实例化实现并从应用程序中使用它。常用的实现是Apache Dbcp

    ds = new BasicDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUsername("root");
    ds.setPassword("root");
    ds.setUrl("jdbc:mysql://localhost/test");
    ...
    // then later in the application:
    Connection conn = ds.getConnection();
    // do the stuff
    conn.close(); // only releases conn back to pool
    ...
    // or better in Java 7:
    try (Connection conn = ds.getConnection()) {
          // do the stuff
    }

【讨论】:

  • 感谢大家的反馈。创建了一个 Connection Manager 类,并与 Connection.getConnection() 完美配合;就像这样,我可以简单地与一种方法建立联系。如果我需要发布更新后的代码,请告诉我。
【解决方案2】:

您可以使用连接池,您的代码可以根据需要从中获取/释放连接。一些流行的是C3P0DBCP。请参阅this answer 以开始使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2015-01-05
    • 2010-10-24
    • 2015-10-25
    • 2011-08-29
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多