java - 独立 Java 应用程序中的连接池

标签 java mysql jdbc

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 blah blah 混淆......

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

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

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

最佳答案

我使用了 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/

关于java - 独立 Java 应用程序中的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866231/

相关文章:

java - 轻量级自制 Java MySQL 连接池 - 它可以工作吗?

java - 将结果集从 SQL 数组转换为字符串数组

java - com.google.maps.api.android.lib6.gmm6.vector.ct 处的致命异常 : java. lang.ArrayIndexOutOfBoundsException

java - 线程安全 - 传递给线程的最终局部方法变量?

java - Jackson 无限递归处理查询

php - 将日期作为参数传递给 php 文件

php - zf2 tablegateway 按列名选择列

java - 使用 JDBC 将表从 SQL Server 复制到 Oracle

java - 自动为 transient 属性赋值

php - Mysql join query with group by