【问题标题】:Connection Pooling in Standalone Java Application独立 Java 应用程序中的连接池
【发布时间】:2013-09-22 20:36:26
【问题描述】:
DriverManager.getConnection("jdbc:mysql:localhost:3306/testdb","root","root");
    (or)
DataSource ds = new {some class which implements DataSource interface};
ds.getConnection("root","root");

使用 DataSource 优于 DriverManager.getConnection();

每个教程都建议使用 DataSource,因为它比 DriverManager 有一些优势。据我所知,(如果我错了,请纠正我)连接池是我们将在 DataSource 中获得的主要好处(也可能是其他好处)。

在这种情况下,如果我的要求是我的桌面 java 应用程序中需要连接池,那么我该如何实现呢?请不要将我与 JNDI 等等混淆....

供应商是否应该提供一个实现 DataSource 接口的类,类似于我正在使用的数据库(mysql)。例如:MysqlDataSource。

如果是这样...下面的代码是否正确...?它是否为我提供了连接池的好处?我如何确保这一点?

MysqlDataSource ds = new MysqlDataSource();
ds.setUrl("jdbc:mysql://localhost:3306/testdb");
ds.setUser("root");
ds.setPassword("root");
Connection connection = ds.getConnection();

【问题讨论】:

  • 抱歉,如果我弄错了,但我的第一印象是您应该了解什么是池en.wikipedia.org/wiki/Object_pool_pattern。在此之后,您可以决定是否以及要使用什么实现,例如 apache commons、c3p0 等,或者创建自己的
  • 您发布的代码不会创建连接池。您需要像这样创建MysqlDataSource,然后将其包装在某种池数据源中。 @nAvEeD links to 问题的答案包含指向您可以使用的池化数据源的链接。这些汇集数据源的文档将告诉您您需要知道的一切。
  • 好的。所以你说的只是创建一个数据源,然后将它与一个池源链接。太棒了。谢谢。你能看看我下面的问题吗?
  • DataSource 实现不一定提供连接池。

标签: java mysql jdbc


【解决方案1】:

我使用了 Tomcat 池数据源。 如果您需要在独立应用程序(应用程序或 Web 服务器之外)中连接数据库,您可以试试这个。

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>7.0.35</version>
</dependency>


DataSource ds = new DataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3307/pcmDB");
ds.setUsername("user");
ds.setPassword("password");
ds.setInitialSize(5);
ds.setMaxActive(10);
ds.setMaxIdle(5);
ds.setMinIdle(2);

一些参考

http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency

http://www.codingpedia.org/ama/tomcat-jdbc-connection-pool-configuration-for-production-and-development/

【讨论】:

    【解决方案2】:

    尝试 3rd 方库。

    大家可以看看http://jolbox.com/,好学好用。

    【讨论】:

    • 链接失效了,很高兴在这里看到一些例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多