0

我只是想知道为什么驱动程序管理器类会提供许多重载方法来连接到数据库。他们之中有一些是

getConnection(String url, String user, String password) 
getConnection(String url, Properties info)

其他可以在 http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/DriverManager.html找到

在每种情况下,您都需要在获得与数据库的连接之前拥有相同的信息集,但是每种getConnection()方法都有不同的方式来访问该信息。我见过人们使用所有这些,而没有任何偏好(据我所知)。

我的问题是,在编码风格方面是否有任何偏好,因为使用一种可能优于另一种。如果不是,这不是超载多余的吗?

4

2 回答 2

1

从技术上讲,getConnection(String url, Properties info)如果您以编程方式收集驱动程序属性,那么这个会更干净。最初的想法是人们将使用 GUI 配置驱动程序,使用接口的getPropertyInfo方法Driver收集所有可能的属性,以便在 GUI 中进行选择和配置。

然后,您只需存储(基本)JDBC url 和.properties包含所有驱动程序属性(或属性对象的(序列化)副本)的文件即可建立连接。我不确定是否有人曾经以这种方式使用过它。

所以最初的想法从未真正流行起来(AFAIK),人们更喜欢将所有属性的 JDBC url 存储为 URL 的一部分,并分别拥有用户名和密码,因此使用getConnection(String url, String user, String password)甚至可能getConnection(String url)在 URL 中包含用户名和密码。

随着DataSourceJDBC 2(标准扩展)的引入,我相信甚至有人谈论过弃用并最终删除 DriverManager 以支持始终使用 DataSources(因为它们使用 JavaBeans 配置样式);尽管这实际上从未发生过。

于 2012-06-02T08:32:51.117 回答
0

如果您只需要提供用户名和密码,则最好使用第一种形式,因为它是强类型的并且只是...更短。

如果您需要一些额外的参数,则必须使用后者,这些参数在高级 API 中没有描述。

于 2012-05-31T19:58:39.560 回答