ms sql microsoft的jdbc驱动程序和jTDS的驱动程序之间的差异

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

每个人的利弊是什么?

你会推荐哪一个?


这里是jTDS自己对这个主题的看法: http ://jtds.sourceforge.net/

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

我建议你去jTDS。

一个相关的区别是,JTDS驱动程序的JDBC 4.0实现(v1.3.1)至少需要Java 7,而Java 6中提供了Microsoft驱动程序的JDBC 4.0实现。

如果您想使用Hibernate 4.3(依赖于JDBC 4.0 API)并支持Java 6,这一点很重要。在这种情况下,JTDS不是一个选项。

使用jTDS的关键原因是它使用较小的GPL许可证,其中Microsoft的驱动程序使用自己的许可证,该许可证对其有更多限制。 一个值得注意的限制是你可能没有

  • 解决软件中的任何技术限制

许可证中有更多限制,例如:

  • 将软件或本协议转让给任何第三方
  • 使用该软件进行商业软件托管服务

可以解释为您可能不会在生产代码中使用它,但许可证中的早期要点似乎允许它。

说完所有这些之后,我不知道SQL Server本身的许可证可能会也可能不会限制第三方驱动程序,例如连接到它的jTDS。

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

 net.sourceforge.jtdsjtds 1.3.1  

对于我的选择,使用jTDS,它更宽容,最不可能让你陷入困境,并且; 这是一个更好的驱动力。

jTDSperformance很好,但看起来jTDS不支持故障转移属性,如果SQL Server切换到辅助,需要重新启动应用程序/服务器以选择新的ip并重新连接。

虽然多年来jTDS比bug的mssql自己的驱动程序要好得多,但最近情况正在发生变化。

这是来自https://confluence.atlassian.com/bitbucketserver/transitioning-from-jtds-to-microsoft-s-jdbc-driver-776640388.html的 qoute:

为何更换司机?

最近发布的Hibernate(Bitbucket Server用于简化其持久层)已经引入了一个要求,即使用的JDBC驱动程序和连接池是JDBC4兼容的。 JDBC4是随Java 6引入的。

Bitbucket Server 2.1之前的版本使用的jTDS驱动程序是JDBC3驱动程序,与Java 1.3兼容,因此不能与较新版本的Hibernate一起使用。 虽然jTDS 1.3.0和1.3.1声称实现了JDBC4和JDBC4.1,但它们实际上并没有。 新方法已经“实现”,但它们的实现都抛出了新的AbstractMethodError(),这意味着它们实际上无法使用。 (请参阅此处的示例,在GitHub上。)

由于jTDS 1.3.1没有提供正常运行的JDBC4实现,因此决定用微软自己的SQL Server驱动程序替换jTDS。 微软的驱动程序得到了积极维护,自2014年以来jTDS尚未更新(在2014年进行的小规模更新之前,它已多年未更新)。 Microsoft提供完整的JDBC4.2(Java 8)驱动程序,并支持SQL Server的所有function,包括SQL Server 2016。