【发布时间】: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实现不一定提供连接池。