Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 微软与微软之间的差异;s jdbc驱动程序和jtd';司机_Java_Sql Server_Jdbc_Jtds - Fatal编程技术网

Java 微软与微软之间的差异;s jdbc驱动程序和jtd';司机

Java 微软与微软之间的差异;s jdbc驱动程序和jtd';司机,java,sql-server,jdbc,jtds,Java,Sql Server,Jdbc,Jtds,每个司机之间有什么不同?我的意思是,除了其中一个是开源的 每种方法的优点/缺点是什么 你推荐哪一个 以下是JTD对这个问题的看法:它们是不同的实现。jTDS驱动程序是4型的,根据我的经验,它的性能更好。5年来,我一直在生产环境中使用jTDS驱动程序,没有任何问题 我建议使用jTDS。一个相关的区别是,jTDS驱动程序(v1.3.1)的JDBC 4.0实现至少需要Java 7,而Microsoft驱动程序的JDBC 4.0实现在Java 6中可用 如果您想使用Hibernate4.3(依赖JDB

每个司机之间有什么不同?我的意思是,除了其中一个是开源的

每种方法的优点/缺点是什么

你推荐哪一个



以下是JTD对这个问题的看法:

它们是不同的实现。jTDS驱动程序是4型的,根据我的经验,它的性能更好。5年来,我一直在生产环境中使用jTDS驱动程序,没有任何问题


我建议使用jTDS。

一个相关的区别是,jTDS驱动程序(v1.3.1)的JDBC 4.0实现至少需要Java 7,而Microsoft驱动程序的JDBC 4.0实现在Java 6中可用


如果您想使用Hibernate4.3(依赖JDBC4.0API)并支持Java6,这一点很重要。在这种情况下,JTDS不是一个选项。

使用JTDS的关键原因是它使用较少的GPL许可证,而微软的驱动程序使用他们自己的许可证,这对它有更多的限制。需要注意的一个限制是,您可能无法

  • 解决软件中的任何技术限制
许可证中有更多限制,例如:

  • 将软件或本协议转让给任何第三方
  • 将该软件用于商业软件托管服务
这可能会被解释为您可能不会在生产代码中使用它,但是许可证中的较早点似乎允许使用它

说到这里,我不知道SQL Server本身中是否有许可证限制第三方驱动程序(如JTD)连接到它

另一点是,jTDS可以通过maven获得,而微软的驱动程序不是

<dependency>
    <groupId>net.sourceforge.jtds</groupId
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>


net.sourceforge.jtdsjtds性能良好,但看起来jtds不支持故障转移属性,如果SQL Server切换到辅助服务器,则需要重新启动应用程序/服务器以选择新ip并重置连接。

尽管多年来,jtds远优于有缺陷的mssql自己的驱动程序,最近情况正发生相反的变化

这里是qoute,来自:

为什么要更换驱动程序?

Hibernate的最新版本,Bitbucket服务器使用它来简化 它的持久性层,引入了JDBC 所使用的驱动程序和连接池符合JDBC4。JDBC4是 使用Java6引入

Bitbucket Server 2.1之前的版本使用的jTDS驱动程序是 JDBC3驱动程序,与Java 1.3兼容,因此无法使用 使用更新版本的Hibernate。而jTDS 1.3.0和1.3.1要求 实现JDBC4和JDBC4.1,它们实际上没有。新方法 已经“实现”,但它们的实现都是新的 AbstractMethodError(),这意味着它们实际上无法使用。(见 (举个例子。)

由于jTDS 1.3.1未提供功能正常的JDBC4实现, 决定用微软自己的SQL Server取代jTDS 司机。微软的驱动程序得到了积极维护,而jTDS则没有 自2014年以来进行了更新(在进行小规模更新之前 2014年,它已经多年没有更新了)。微软提供了一个 完整的JDBC4.2(Java 8)驱动程序,支持SQL的所有功能 服务器,包括SQL Server 2016


我无法想象选择Microsoft Java集成组件而不是jTDS。Atlassian关于Confluence的文档建议在连接到SQL Server时在MS JDBC jar上使用jTDS…请看以下问题:感谢链接,Stephen,我确实搜索了SO,但我似乎错过了这个问题。。。“除了其中一个是开源的“-Microsoft的SQL Server JDBC驱动程序目前正在开发中。Microsoft SQL Server JDBC驱动程序也是类型4驱动程序。虽然它在过去几年有所改进,但它仍然不如JTDS那么好和稳定。而对于XA的支持也总是涉及到一个本地SQL Server组件。请考虑JTDS驱动程序自2013以来没有被更新,只支持JDBC3.0。微软驱动程序实现JDBC 4.3()。并且存在于Java 11版本中。自2016年11月以来,Microsoft驱动程序在Github上以MIT许可证的形式提供,在Maven Central上以groupId“com.Microsoft.sqlserver”的形式提供。是的,jTDS已经相当过时。去年,我将一个应用程序升级到Java8,发现在Java8中使用带有SSL的jTDS时存在错误。尽管自2014年以来jTDS sourceforge论坛上出现了一个关于工作补丁的bug报告,但驱动程序仍然没有更新以修复它。我必须创建自己的副本来包含修复。这周我发现了另一个bug。查询datetime2列时,getMetaData将列类型错误地报告为nvarchar。microsoft驱动程序工作正常。