Различия между драйверами ms sql microsoft jdbc и драйвером jTDS

В чем разница между каждым драйвером? Я имею в виду, кроме того, что один из них является открытым исходным кодом

Каковы плюсы и минусы каждого из них?

Какой из них вы бы порекомендовали?


здесь jTDS собственное мнение по этому вопросу: http://jtds.sourceforge.net/

Ответы

Ответ 1

Это разные реализации. Драйвер jTDS - это тип 4, и мой опыт имеет лучшую производительность. Я использую драйвер jTDS в рабочей среде без каких-либо проблем в течение 5 лет.

Я бы порекомендовал пойти с jTDS.

Ответ 2

Одно из существенных отличий заключается в том, что для реализации JDBC 4.0 JTDS-драйвера (v1.3.1) требуется, по крайней мере, Java 7, тогда как JDBC 4.0. Реализация драйвера Microsoft доступна на Java 6.

Это важно, если вы хотите использовать Hibernate 4.3 (полагаясь на JDBC 4.0 API) и поддерживая Java 6. В этом случае JTDS не является вариантом.

Ответ 3

Основная причина использования jTDS заключается в том, что он использует меньшую лицензию GPL, где драйвер Microsoft использует свою собственную лицензию, которая имеет гораздо больше ограничений для нее. Одно из ограничений - вы не можете

  • работать с любыми техническими ограничениями в программном обеспечении.

В лицензии есть больше ограничений, например:

  • передать программное обеспечение или это соглашение третьим лицам
  • использовать программное обеспечение для хостинга коммерческих программ

Который может быть истолкован, что вы не можете использовать его в производственном коде, однако более ранние точки в лицензии, похоже, позволяют это.

Сказав все это, я не знаю о лицензиях в самом SQL Server, которые могут или не могут ограничивать сторонние драйверы, такие как jTDS-соединение с ним.

Еще один момент заключается в том, что jTDS доступен через maven, драйвер Microsoft - нет.

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

По моему выбору, используйте jTDS, это более разрешительно и наименее вероятно, чтобы вы попали в неприятности; это лучший драйвер.

Ответ 4

jTDSperformance хорош, но похоже, что свойство fail-over не поддерживается jTDS, если SQL Server переключается на вторичное, необходимо перезапустить приложение/сервер для выбора нового ip и перезапуска соединения.

Ответ 5

Хотя в течение многих лет jTDS намного превосходил собственный драйвер mssql, в последнее время ситуация меняется.

Вот qoute из https://confluence.atlassian.com/bitbucketserver/transitioning-from-jtds-to-microsoft-s-jdbc-driver-776640388.html:

Зачем менять драйверы?

Недавние выпуски Hibernate, которые Bitbucket Server использует для упрощения своего уровня персистентности, ввели требование о том, чтобы JDBC-драйверы и пулы подключений были совместимы с JDBC4. JDBC4 был представлен с Java 6.

Драйвер jTDS, используемый релизами до Bitbucket Server 2.1, является драйвером JDBC3, совместимым с Java 1.3, и поэтому не может использоваться с более новыми версиями Hibernate. Хотя jTDS 1.3.0 и 1.3.1 претендуют на реализацию JDBC4 и JDBC4.1, на самом деле этого не делают. Новые методы были "реализованы", но их реализации все бросают новый AbstractMethodError(), что означает, что они фактически не могут использоваться. (См. Пример здесь, на GitHub.)

Поскольку jTDS 1.3.1 не обеспечивает функционирование JDBC4, было принято решение заменить jTDS на собственный драйвер SQL Server Microsoft. Драйвер Microsoft активно поддерживается, где jTDS не обновляется с 2014 года (и до небольшого раунда обновлений, выполненных в 2014 году, он не обновлялся в течение нескольких лет). Microsoft предлагает полный JDBC4.2 (Java 8) драйвер и поддерживает все функции SQL Server, включая SQL Server 2016.