Различия между MS SQL Server драйверов JDBC и Microsoft JTDS драйвер - PullRequest
21 голосов
/ 09 декабря 2010

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

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

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


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

Ответы [ 5 ]

17 голосов
/ 09 декабря 2010

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

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

3 голосов
/ 05 октября 2018

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

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

3 голосов
/ 27 октября 2014

Одно существенное различие заключается в том, что для реализации 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 не подходит.

2 голосов
/ 18 мая 2016

Основная причина ДЛЯ использования 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, это более допустимо и наименее вероятно, что у вас возникнут проблемы, и; это лучший водитель.

1 голос
/ 13 сентября 2018

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

...