各ドライバーの違いは何ですか?つまり、そのうちの1つがオープンソースであることに加えて
それぞれの長所/短所は何ですか?
どちらをお勧めしますか?
この件に関するjTDS自身の意見は次のとおりです。 http://jtds.sourceforge.net/
それらは別個の実装です。 jTDSドライバーはタイプ4であり、私の経験ではパフォーマンスが優れています。私は5年間、問題なく実稼働環境でjTDSドライバーを使用しています。
JTDSを使用することをお勧めします。
長年、jTDSはバグのあるmssql自体のドライバーよりもはるかに優れていましたが、最近は逆になっています。
これが https://confluence.atlassian.com/bitbucketserver/transitioning-from-jtds-to-Microsoft-s-jdbc-driver-776640388.html からのqouteです。
ドライバーを変更する理由
Bitbucket Serverが永続層を簡素化するために使用するHibernateの最近のリリースでは、使用されるJDBCドライバーと接続プールがJDBC4に準拠しているという要件が導入されています。 JDBC4はJava 6で導入されました。
Bitbucket Server 2.1より前のリリースで使用されていたjTDSドライバーはJDBC3ドライバーであり、Java 1.3と互換性があるため、新しいバージョンのHibernateでは使用できません。jTDS1.3.0および1.3.1 JDBC4とJDBC4.1を実装すると主張していますが、実際には実装していません。新しいメソッドは「実装」されていますが、実装はすべて新しいAbstractMethodError()をスローします。つまり、実際には使用できません(例を参照)。 ここでは、GitHubで 。)
JTDS 1.3.1は機能するJDBC4実装を提供しないため、jTDSをMicrosoft独自のSQLServerドライバーに置き換えることが決定されました。 Microsoftのドライバーは積極的に保守されており、jTDSは2014年以降更新されていません(2014年に行われる小さな更新の前は、何年も更新されていませんでした)。 Microsoftは、完全なJDBC4.2(Java 8)ドライバーを提供し、SQL Server2016を含むSQLServerのすべての機能をサポートしています。
関連する違いの1つは、JTDSドライバー(v1.3.1)のJDBC4.0実装には少なくともJava 7が必要であるのに対し、MicrosoftドライバーのJDBC4.0実装はJavaで利用できることです。 _6。
これは、Hibernate 4.3(JDBC 4.0 APIに依存)を使用してJava 6をサポートする場合に重要です。その場合、JTDSはオプションではありません。
jTDSのパフォーマンスは良好ですが、フェイルオーバープロパティはjTDSでサポートされていないようです。SQLServerがセカンダリに切り替わると、新しいIPを選択して接続をリセットするためにアプリケーション/サーバーを再起動する必要があります。
JTDSを使用する主な理由は、Microsoftのドライバーがはるかに多くの制限がある独自のライセンスを使用するGPLライセンスを使用することです。注意の1つの制限は、あなたができないかもしれないということです
- ソフトウェアの技術的な制限を回避する
ライセンスには、次のようなその他の制限があります。
- ソフトウェアまたは本契約を第三者に譲渡する
- 商用ソフトウェアホスティングサービスにソフトウェアを使用する
これは、本番コードでは使用できないと解釈される可能性がありますが、ライセンスの初期のポイントでは許可されているようです。
以上のことをすべて言っても、SQL Server自体の中に、接続するjTDSなどのサードパーティドライバーを制限する場合と制限しない場合があるライセンスについてはわかりません。
もう1つのポイントは、jTDSはMaven経由で利用できますが、Microsoftドライバーは利用できないということです。
<dependency>
<groupId>net.sourceforge.jtds</groupId
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
私の選択では、jTDSを使用します。これは、より寛容で、問題が発生する可能性が最も低くなります。それはより良いドライバーです。