com.microsoft.sqlserver.jdbc.SQLServerConnection和java.sql.Connection之间的区别是什么?

时间:2015-10-22 15:36:24

标签: java sql-server maven jdbc

我在连接到SQL Server 2012数据库的Tomcat 8上安装了Maven Web应用程序。

出于记录目的,我想使用getClientConnectionID

由于微软的政策,让他们的驱动程序与Maven一起工作非常痛苦(我知道它可能并且我做了一段时间,但在我的情况下它会导致一些问题迁移/共享项目后)。 不幸的是,JTDS-Driver拒绝使用数据库服务器,原因不明。

所以现在我只是将sqljdbc4-4.0.jar放入Tomcat的lib文件夹和项目的META-INF /服务中,从那以后一切都很好。

然而,在对数据库进行更多操作之后,我不确定是否值得切换,并尝试获取一些信息,com.microsoft.sqlserver.jdbc.SQLServerConnectionjava.sql.Connection之间的实际差异是什么?改变是有道理的。

到目前为止,我无法找到有用的信息。大多数页面只是提到如何解决每种类型的问题...

在性能,行为或其他可能性方面是否存在任何差异,这实际上有理由转回?

2 个答案:

答案 0 :(得分:3)

java.sql.Connectioninterface其中com.microsoft.sqlserver.jdbc.SQLServerConnectionMS-SQL的实现,您无法比较其效果,因为第一个只是interface在另一个是实际实现的地方什么都不做。因此,您使用Connection在代码中维护abstraction,但实际上您将使用您提供的实现,在这种情况下为com.microsoft.sqlserver.jdbc.SQLServerConnection。人们通常会将这些内容添加为runtime dependencies,以便他们不会获得污染的命名空间。

答案 1 :(得分:1)

java.sql.Connection是由com.microsoft.sqlserver.jdbc.SQLServerConnection实现的接口。

通常,您只能针对接口进行编程,使其独立于特定实现。然后 - 如果您不依赖某些特定于实现的行为 - 您可以简单地将jar与JDBC驱动程序交换,并且您的代码仍然可以在没有任何更改的情况下工作。