高速、シンプル、信頼性。 HikariCP は、「ゼロオーバーヘッド」の実稼働対応 JDBC 接続プールです。このライブラリは約 165Kb と非常に軽量です。その方法については、こちらをご覧ください。
「シンプルさは信頼性の必須条件です。」
-エドガー・ダイクストラ博士
重要
プールがゼロになり回復しないというまれな状況を回避するには、 TCP キープアライブを構成する必要があります。一部の JDBC ドライバーはプロパティ経由でこれをサポートしています (PostgreSQL のtcpKeepAlive=true
など)。ただし、いずれの場合も OS レベルで構成することもできます。 PostgreSQL エクスペリエンスを向上させるには、OS TCP キープアライブおよび/または TCP キープアライブの設定を参照してください。
Java 11 以降のMaven アーティファクト:
< dependency >
< groupId >com.zaxxer</ groupId >
< artifactId >HikariCP</ artifactId >
< version >6.2.1</ version >
</ dependency >
Java 8 Maven アーティファクト (メンテナンス モード):
< dependency >
< groupId >com.zaxxer</ groupId >
< artifactId >HikariCP</ artifactId >
< version >4.0.3</ version >
</ dependency >
Java 7 Maven アーティファクト (メンテナンス モード):
< dependency >
< groupId >com.zaxxer</ groupId >
< artifactId >HikariCP-java7</ artifactId >
< version >2.4.13</ version >
</ dependency >
Java 6 Maven アーティファクト (メンテナンス モード):
< dependency >
< groupId >com.zaxxer</ groupId >
< artifactId >HikariCP-java6</ artifactId >
< version >2.3.13</ version >
</ dependency >
またはここからダウンロードしてください。
マイクロベンチマークは、JMH マイクロベンチマーク フレームワークを使用してプールのオーバーヘッドを分離して測定するために作成されました。詳細については、HikariCP ベンチマーク プロジェクトをチェックアウトし、自分でベンチマークをレビュー/実行できます。
DataSource.getConnection()
/ Connection.close()
として定義されます。Connection.prepareStatement()
、 Statement.execute()
、 Statement.close()
として定義されます。独特の「スパイク需要」負荷に関連した、他のプールと比較した、HikariCP v2.6 の分析。
お客様の環境では、新しい接続の取得に高額なコストがかかり、動的にサイズ変更されるプールが必要でしたが、それでもリクエストの急増に対する応答性が必要でした。スパイク需要の処理については、こちらをご覧ください。
別名「接続プールのサイジングについておそらく知らなかったこと」 。 Oracle Real-world Performance グループのビデオを見て、データベース接続が通常ほど多くなくてもよい理由を学びましょう。実際、接続が多すぎると、パフォーマンスに明らかな悪影響が生じます。 Oracle のデモの場合は 50 倍の差がありました。続きを読んで調べてください。
エンジニアリング ブログで、HikariCP について一方的に深く書いてくれた WIX の方々に感謝します。時間があれば見てください。
興味深い「データベースダウン」プールチャレンジを読んでください。
他の製品と同様に、HikariCP のようなオープンソース ソフトウェアは自由市場で競争します。わかりました。製品の進歩は、一度公開されると採用されることが多いことを私たちは理解しています。そして私たちは、アイデアが時代精神から生まれ得ることを理解しています。同時に独立して。しかし、特にオープンソース プロジェクトにおけるイノベーションのタイムラインも明確であり、私たちはユーザーに私たちの分野におけるイノベーションの流れの方向性を理解してもらいたいと考えています。何百時間にもわたる思考と研究の結果が簡単に利用されるのを見ると士気を下げるかもしれません。おそらくそれは自由市場に特有のものですが、私たちは士気をくじかれることはありません。私たちはやる気にあふれています。差を広げるために。
HikariCP には適切なデフォルトが付属しており、追加の調整を行わなくても、ほとんどの展開で適切に機能します。以下にマークされている「必須」を除き、すべてのプロパティはオプションです。
? HikariCP では、すべての時間値にミリ秒が使用されます。
HikariCP は、パフォーマンスと信頼性の両方を正確なタイマーに依存しています。サーバーが NTP サーバーなどのタイムソースと同期していることが不可欠です。特にサーバーが仮想マシン内で実行されている場合はそうです。なぜ?詳細はこちらをご覧ください。仮想マシンのクロックを「同期」するためにハイパーバイザーの設定に依存しないでください。仮想マシン内でタイムソース同期を構成します。時刻同期の欠如が原因であることが判明した問題についてサポートを求めに来た場合、Twitter 上で公然と罵倒されることになります。
? dataSourceClassName
JDBCドライバーが提供するDataSource
クラスの名前です。このクラス名を取得するには、特定の JDBC ドライバーのドキュメントを参照するか、以下の表を参照してください。注 XA データ ソースはサポートされていません。 XA には、bitronix のような実際のトランザクション マネージャーが必要です。 「昔ながらの」DriverManager ベースの JDBC ドライバー構成にjdbcUrl
使用している場合、このプロパティは必要ないことに注意してください。デフォルト: なし
- または -
? jdbcUrl
このプロパティは、HikariCP に「DriverManager ベース」の構成を使用するように指示します。 DataSource ベースの構成 (上記) は、さまざまな理由 (下記を参照) から優れていると考えられますが、多くの展開では大きな違いはほとんどありません。 「古い」ドライバーでこのプロパティを使用する場合は、 driverClassName
プロパティの設定も必要になる場合がありますが、最初は設定せずに試してください。このプロパティを使用する場合でも、 DataSourceプロパティを使用してドライバーを構成できます。実際、URL 自体で指定されたドライバー パラメーターよりもこのプロパティの方が推奨されることに注意してください。デフォルト: なし
? username
このプロパティは、基礎となるドライバーから接続を取得するときに使用されるデフォルトの認証ユーザー名を設定します。 DataSource の場合、これは、基になる DataSource でDataSource.getConnection(*username*, password)
を呼び出すことにより、非常に決定的な方法で機能することに注意してください。ただし、ドライバーベースの構成の場合、すべてのドライバーが異なります。ドライバーベースの場合、HikariCP はこのusername
プロパティを使用して、ドライバーのDriverManager.getConnection(jdbcUrl, props)
呼び出しに渡されるProperties
にuser
プロパティを設定します。これが必要でない場合は、このメソッドを完全にスキップして、たとえばaddDataSourceProperty("username", ...)
を呼び出します。デフォルト: なし
? password
このプロパティは、基礎となるドライバーから接続を取得するときに使用されるデフォルトの認証パスワードを設定します。 DataSource の場合、これは、基になる DataSource でDataSource.getConnection(username, *password*)
を呼び出すことにより、非常に決定的な方法で機能することに注意してください。ただし、ドライバーベースの構成の場合、すべてのドライバーが異なります。ドライバーベースの場合、HikariCP はこのpassword
プロパティを使用して、ドライバーのDriverManager.getConnection(jdbcUrl, props)
呼び出しに渡されるProperties
にpassword
プロパティを設定します。これが必要でない場合は、このメソッドを完全にスキップして、たとえばaddDataSourceProperty("pass", ...)
を呼び出します。デフォルト: なし
✅ autoCommit
このプロパティは、プールから返された接続のデフォルトの自動コミット動作を制御します。これはブール値です。デフォルト: true
⏳ connectionTimeout
このプロパティは、クライアント (つまりあなた) がプールからの接続を待機する最大時間をミリ秒単位で制御します。接続が使用可能にならないままこの時間を経過すると、SQLException がスローされます。許容可能な接続タイムアウトの最小値は 250 ミリ秒です。デフォルト: 30000 (30秒)
⏳ idleTimeout
このプロパティは、接続がプール内でアイドル状態になれる最大時間を制御します。この設定は、 minimumIdle
がmaximumPoolSize
未満に定義されている場合にのみ適用されます。プールがminimumIdle
接続に達しても、アイドル状態の接続は廃止されません。接続がアイドルとしてリタイアされるかどうかは、最大で +30 秒の変動があり、平均で +15 秒の変動が発生します。このタイムアウトの前に、接続がアイドル状態としてリタイアされることはありません。値 0 は、アイドル状態の接続がプールから削除されないことを意味します。許容される最小値は 10000ms (10 秒) です。デフォルト: 600000 (10 分)
⏳ keepaliveTime
このプロパティは、データベースまたはネットワーク インフラストラクチャによるタイムアウトを防ぐために、HikariCP が接続を維持しようとする頻度を制御します。この値は、 maxLifetime
値より小さい必要があります。 「キープアライブ」はアイドル状態の接続でのみ発生します。特定の接続に対する「キープアライブ」の時間が来ると、その接続はプールから削除され、「ping」が実行され、プールに戻されます。 「ping」は、JDBC4 isValid()
メソッドの呼び出し、またはconnectionTestQuery
の実行のいずれかです。通常、プール外にある期間は 1 桁のミリ秒、またはミリ秒未満で測定する必要があるため、パフォーマンスに顕著な影響を与えることはほとんどありません。許容される最小値は 30000ms (30 秒) ですが、分の範囲内の値が最も望ましいです。デフォルト: 120000 (2分)
⏳ maxLifetime
このプロパティは、プール内の接続の最大存続期間を制御します。使用中の接続は決して廃止されず、閉じられた場合にのみ削除されます。プール内の大量絶滅を避けるために、接続ごとにわずかな負の減衰が適用されます。この値を設定することを強くお勧めします。この値は、データベースやインフラストラクチャによって課される接続時間制限よりも数秒短くする必要があります。値 0 は、最大存続期間がない (無限の存続期間) ことを示し、もちろんidleTimeout
設定の影響を受けます。許容される最小値は 30000ms (30 秒) です。デフォルト: 1800000 (30 分)
? connectionTestQuery
ドライバーが JDBC4 をサポートしている場合は、このプロパティを設定しないことを強くお勧めします。これは、JDBC4 Connection.isValid() API
サポートしない「レガシー」ドライバー用です。これは、データベースへの接続がまだ有効であることを検証するために、プールから接続が提供される直前に実行されるクエリです。もう一度、このプロパティを使用せずにプールを実行してみてください。ドライバが JDBC4 に準拠していない場合、HikariCP はエラーをログに記録して通知します。デフォルト: なし
? minimumIdle
このプロパティは、HikariCP がプール内で維持しようとするアイドル接続の最小数を制御します。アイドル状態の接続がこの値を下回り、プール内の合計接続数がmaximumPoolSize
未満の場合、HikariCP は追加の接続を迅速かつ効率的に追加するために最善の努力を尽くします。ただし、パフォーマンスを最大限に高め、需要の急増に対する応答性を高めるには、この値を設定せず、代わりに、HikariCP が固定サイズの接続プールとして機能することを許可することをお勧めします。デフォルト:maximumPoolSizeと同じ
? maximumPoolSize
このプロパティは、アイドル状態の接続と使用中の接続の両方を含む、プールが到達できる最大サイズを制御します。基本的に、この値によってデータベース バックエンドへの実際の接続の最大数が決まります。この適切な値は、実行環境によって最適に決定されます。プールがこのサイズに達し、使用可能なアイドル状態の接続がない場合、getConnection() の呼び出しはタイムアウトするまで最大connectionTimeout
ミリ秒間ブロックされます。プールのサイズ設定についてお読みください。デフォルト: 10
? metricRegistry
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、さまざまなメトリックを記録するためにプールで使用されるCodahale/Dropwizard MetricRegistry
のインスタンスを指定できます。詳細については、メトリクス wiki ページを参照してください。デフォルト: なし
? healthCheckRegistry
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、現在の正常性情報を報告するためにプールで使用されるCodahale/Dropwizard HealthCheckRegistry
のインスタンスを指定できます。詳細については、ヘルスチェック wiki ページを参照してください。デフォルト: なし
? poolName
このプロパティは接続プールのユーザー定義名を表し、プールとプール構成を識別するために主にロギング コンソールと JMX 管理コンソールに表示されます。デフォルト: 自動生成
⏳ initializationFailTimeout
このプロパティは、初期接続でプールを正常にシードできない場合に、プールを「高速フェイル」するかどうかを制御します。正の数値は、初期接続の取得を試行するミリ秒数とみなされます。この期間中、アプリケーション スレッドはブロックされます。このタイムアウトが発生する前に接続を取得できない場合は、例外がスローされます。このタイムアウトは、 connectionTimeout
期間の経過後に適用されます。値がゼロ (0) の場合、HikariCP は接続の取得と検証を試みます。接続は取得できても検証に失敗した場合、例外がスローされ、プールは開始されません。ただし、接続を取得できない場合、プールは開始されますが、その後の接続の取得は失敗する可能性があります。ゼロ未満の値を指定すると、最初の接続試行がバイパスされ、バックグラウンドで接続を取得しようとしている間、プールがすぐに開始されます。その結果、その後の接続を取得する試みが失敗する可能性があります。デフォルト: 1
❎ isolateInternalQueries
このプロパティは、HikariCP が接続アライブ テストなどの内部プール クエリを独自のトランザクションで分離するかどうかを決定します。これらは通常、読み取り専用のクエリであるため、独自のトランザクションにカプセル化する必要はほとんどありません。このプロパティは、 autoCommit
が無効になっている場合にのみ適用されます。デフォルト: false
allowPoolSuspension
このプロパティは、JMX を通じてプールを一時停止および再開できるかどうかを制御します。これは、特定のフェールオーバー自動化シナリオで役立ちます。プールが一時停止されている場合、 getConnection()
の呼び出しはタイムアウトせず、プールが再開されるまで保持されます。デフォルト: false
❎ readOnly
このプロパティは、プールから取得した接続をデフォルトで読み取り専用モードにするかどうかを制御します。一部のデータベースは読み取り専用モードの概念をサポートしていませんが、他のデータベースは接続が読み取り専用に設定されている場合にクエリの最適化を提供することに注意してください。このプロパティが必要かどうかは、アプリケーションとデータベースに大きく依存します。デフォルト: false
❎Mbeans registerMbeans
このプロパティは、JMX 管理 Bean (「MBean」) が登録されるかどうかを制御します。デフォルト: false
? catalog
このプロパティは、カタログの概念をサポートするデータベースのデフォルトのカタログを設定します。このプロパティが指定されていない場合は、JDBC ドライバーによって定義されたデフォルトのカタログが使用されます。デフォルト: ドライバーのデフォルト
? connectionInitSql
このプロパティは、新しい接続が作成されるたびにプールに追加する前に実行される SQL ステートメントを設定します。この SQL が有効でない場合、または例外がスローされた場合は、接続失敗として扱われ、標準の再試行ロジックに従います。デフォルト: なし
? driverClassName
HikariCP は、 jdbcUrl
のみに基づいて DriverManager を通じてドライバーを解決しようとしますが、一部の古いドライバーの場合は、 driverClassName
も指定する必要があります。ドライバーが見つからなかったことを示す明らかなエラー メッセージが表示されない限り、このプロパティは省略してください。デフォルト: なし
? transactionIsolation
このプロパティは、プールから返される接続のデフォルトのトランザクション分離レベルを制御します。このプロパティが指定されていない場合は、JDBC ドライバーによって定義されたデフォルトのトランザクション分離レベルが使用されます。このプロパティは、すべてのクエリに共通する特定の分離要件がある場合にのみ使用してください。このプロパティの値は、 TRANSACTION_READ_COMMITTED
、 TRANSACTION_REPEATABLE_READ
などのConnection
クラスの定数名です。デフォルト: ドライバーのデフォルト
⏳ validationTimeout
このプロパティは、接続の生存性がテストされる最大時間を制御します。この値はconnectionTimeout
より小さくなければなりません。許容可能な検証タイムアウトの最小値は 250 ミリ秒です。デフォルト: 5000
⏳ leakDetectionThreshold
このプロパティは、接続リークの可能性を示すメッセージがログに記録されるまでに、接続がプールから外れる時間を制御します。値 0 は、リーク検出が無効であることを意味します。リーク検出を有効にするための最小許容値は 2000 (2 秒) です。デフォルト: 0
➡ dataSource
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、HikariCP にリフレクション経由で構築させるのではなく、プールによってラップされるDataSource
のインスタンスを直接設定できます。これは、一部の依存関係注入フレームワークで役立つ場合があります。このプロパティを指定すると、 dataSourceClassName
プロパティとすべての DataSource 固有のプロパティは無視されます。デフォルト: なし
? schema
このプロパティは、スキーマの概念をサポートするデータベースのデフォルトのスキーマを設定します。このプロパティが指定されていない場合は、JDBC ドライバーによって定義されたデフォルトのスキーマが使用されます。デフォルト: ドライバーのデフォルト
➡ threadFactory
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、プールで使用されるすべてのスレッドの作成に使用されるjava.util.concurrent.ThreadFactory
のインスタンスを設定できます。これは、アプリケーション コンテナによって提供されるThreadFactory
を通じてのみスレッドを作成できる一部の制限された実行環境で必要になります。デフォルト: なし
➡ scheduledExecutor
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、内部でスケジュールされたさまざまなタスクに使用されるjava.util.concurrent.ScheduledExecutorService
のインスタンスを設定できます。 HikariCP にScheduledThreadPoolExecutor
インスタンスを提供する場合は、 setRemoveOnCancelPolicy(true)
を使用することをお勧めします。デフォルト: なし
➡ exceptionOverride
このプロパティは、プログラムによる構成または IoC コンテナーを介してのみ使用できます。このプロパティを使用すると、特定の例外条件により接続がプールから削除される前に呼び出される、 com.zaxxer.hikari.SQLExceptionOverride
インターフェイスを実装するクラスのインスタンスを設定できます。通常、 SQLException
がスローされると、特定のSQLStatesまたはErrorCodeが存在すると接続がプールから削除されます。 adjudicate()
メソッドはSQLExceptionOverride
インスタンスで呼び出され、次のいずれかを返します: Override.CONTINUE_EVICT
。 Override.DO_NOT_EVICT
またはOverride.MUST_EVICT
。非常に特殊な場合を除いて、 Override.CONTINUE_EVICT
が返され、デフォルトのエビクト/非エビクト ロジックの実行が可能になります。デフォルト: なし
? exceptionOverrideClassName
このプロパティを使用すると、 com.zaxxer.hikari.SQLExceptionOverride
インターフェイスを実装するユーザー指定のクラスの名前を指定できます。クラスのインスタンスは、接続のエビクションを判断するためにプールによってインスタンス化されます。詳しい説明については、上記のexceptionOverride
プロパティを参照してください。デフォルト: なし
上で見られるように、HikariCP には回すための「ノブ」がたくさんありますが、他のいくつかのプールに比べると比較的少ないです。これは設計哲学です。 HikariCP のデザイン美学はミニマリズムです。 「シンプルであるほど優れている」または「少ないほど優れている」という設計哲学に従って、一部の構成軸は意図的に省略されています。
Apache DBCP、Vibur、c3p0 などの多くの接続プールは、 PreparedStatement
キャッシュを提供します。光CPはそうではありません。なぜ?
接続プール層では、 PreparedStatements
接続ごとにのみキャッシュできます。アプリケーションに一般的に実行される 250 のクエリと 20 の接続のプールがある場合、データベースに 5000 のクエリ実行プランを保持するよう要求することになります。同様に、プールはこれに相当する数のPreparedStatements
とそれに関連するオブジェクトのグラフをキャッシュする必要があります。
PostgreSQL、Oracle、Derby、MySQL、DB2 など、ほとんどの主要なデータベース JDBC ドライバーには、構成可能なステートメント キャッシュがすでに備わっています。 JDBC ドライバーはデータベース固有の機能を活用する独自の立場にあり、ほぼすべてのキャッシュ実装は接続間で実行プランを共有できます。これは、メモリ内の 5000 のステートメントと関連する実行プランの代わりに、一般的に実行される 250 のクエリにより、データベース内にちょうど 250 の実行プランが作成されることを意味します。賢い実装では、 PreparedStatement
オブジェクトをドライバー レベルでメモリに保持することさえせず、単に新しいインスタンスを既存のプラン ID にアタッチするだけです。
プーリング層でステートメント キャッシュを使用することはアンチパターンであり、ドライバーが提供するキャッシュと比較してアプリケーションのパフォーマンスに悪影響を及ぼします。
ステートメント キャッシュと同様に、ほとんどの主要なデータベース ベンダーは、独自のドライバーのプロパティを通じてステートメント ログをサポートしています。これには、Oracle、MySQL、Derby、MSSQL などが含まれます。低速クエリのログをサポートするものもあります。これをサポートしていない少数のデータベースについては、いくつかのオプションが利用可能です。 p6spy がうまく動作し、log4jdbc と jdbcdslog-exp が利用可能であるという報告を受け取りました。
データベースの再起動やネットワーク パーティション イベントから適切に回復するためにドライバーとシステムを構成する方法の詳細については、高速回復ガイドをお読みください。
次のように、 HikariConfig
クラスを使用できます1 :
HikariConfig config = new HikariConfig ();
config . setJdbcUrl ( "jdbc:mysql://localhost:3306/simpsons" );
config . setUsername ( "bart" );
config . setPassword ( "51mp50n" );
config . addDataSourceProperty ( "cachePrepStmts" , "true" );
config . addDataSourceProperty ( "prepStmtCacheSize" , "250" );
config . addDataSourceProperty ( "prepStmtCacheSqlLimit" , "2048" );
HikariDataSource ds = new HikariDataSource ( config );
1 MySQL 固有の例。そのままコピーしないでください。
または、次のようにHikariDataSource
直接インスタンス化します。
HikariDataSource ds = new HikariDataSource ();
ds . setJdbcUrl ( "jdbc:mysql://localhost:3306/simpsons" );
ds . setUsername ( "bart" );
ds . setPassword ( "51mp50n" );
...
またはプロパティ ファイル ベース:
// Examines both filesystem and classpath for .properties file
HikariConfig config = new HikariConfig ( "/some/path/hikari.properties" );
HikariDataSource ds = new HikariDataSource ( config );
プロパティ ファイルの例:
dataSourceClassName =org.postgresql.ds.PGSimpleDataSource
dataSource.user =test
dataSource.password =test
dataSource.databaseName =mydb
dataSource.portNumber =5432
dataSource.serverName =localhost
またはjava.util.Properties
ベース:
Properties props = new Properties ();
props . setProperty ( "dataSourceClassName" , "org.postgresql.ds.PGSimpleDataSource" );
props . setProperty ( "dataSource.user" , "test" );
props . setProperty ( "dataSource.password" , "test" );
props . setProperty ( "dataSource.databaseName" , "mydb" );
props . put ( "dataSource.logWriter" , new PrintWriter ( System . out ));
HikariConfig config = new HikariConfig ( props );
HikariDataSource ds = new HikariDataSource ( config );
プロパティ ファイルの場所を指定するために使用できる、 hikaricp.configurationFile
システム プロパティもあります。このオプションを使用する場合は、デフォルトのコンストラクターを使用してHikariConfig
またはHikariDataSource
インスタンスを構築すると、プロパティファイルがロードされます。
MySQL パフォーマンスのヒント
jdbcUrl
の代わりにdataSourceClassName
を使用することをお勧めしますが、どちらでも使用できます。もう一度言いますが、どちらでも構いません。
注: Spring Boot 自動構成ユーザーは、 jdbcUrl
ベースの構成を使用する必要があります。
MySQL データソースは、ネットワーク タイムアウトのサポートに関して壊れていることが知られています。代わりにjdbcUrl
構成を使用してください。
一般的なデータベースの JDBC DataSourceクラスのリストを次に示します。
データベース | ドライバ | データソースクラス |
---|---|---|
アパッチダービー | ダービー | org.apache.derby.jdbc.ClientDataSource |
火の鳥 | ジェイバード | org.firebirdsql.ds.FBSimpleDataSource |
Google スパナ | スパナ | com.google.cloud.spanner.jdbc.JdbcDriver |
H2 | H2 | org.h2.jdbcx.JdbcDataSource |
HSQLDB | HSQLDB | org.hsqldb.jdbc.JDBCDataSource |
IBM DB2 | IBM JCC | com.ibm.db2.jcc.DB2SimpleDataSource |
IBM Informix | IBM Informix | com.informix.jdbcx.IfxDataSource |
MS SQLサーバー | マイクロソフト | com.microsoft.sqlserver.jdbc.SQLServerDataSource |
コネクタ/J | ||
マリアDB | マリアDB | org.mariadb.jdbc.MariaDbDataSource |
オラクル | オラクル | oracle.jdbc.pool.OracleDataSource |
OrientDB | OrientDB | com.orienttechnologies.orient.jdbc.OrientDataSource |
PostgreSQL | pgjdbc-ng | com.impossibl.postgres.jdbc.PGDataSource |
PostgreSQL | PostgreSQL | org.postgresql.ds.PGSimpleDataSource |
SAP MaxDB | SAP | com.sap.dbtech.jdbc.DriverSapDB |
SQLite | ゼリアル | org.sqlite.SQLiteデータソース |
サイベース | j接続 | com.sybase.jdbc4.jdbc.SybDataSource |
注: Play 2.4 はデフォルトで HikariCP を使用するようになりました。 Play フレームワーク用の新しいプラグインが登場しました。プレイヒカリプ。優れた Play フレームワークを使用している場合、アプリケーションは HikariCP に値します。 Edulify チームに感謝します!
新しい Clojure ラッパーが tomekw によって作成され、ここにあります。
新しい JRuby ラッパーが tomekw によって作成され、ここにあります。
Google ディスカッション グループ、HikariCP はここにあり、FAQ が増加しています。
次のような追加情報については、Wiki を忘れないでください。
⇒ Java 8+ (Java 6/7 アーティファクトはメンテナンス モードです)
⇒ slf4jライブラリ
高パフォーマンスのプロジェクトにはツールが多すぎるということはありません。以下の企業に感謝いたします。
ej-technology の優れたオールインワン プロファイラー JProfiler に感謝します。
YourKit は、フル機能の Java プロファイラーを使用してオープン ソース プロジェクトをサポートします。詳細については、下の YourKit ロゴをクリックしてください。
master
ではなくdev
ブランチから変更を実行し、プル リクエストを送信してください。タブではなくスペースを使用するようにエディタを設定し、編集しているコードの見かけのスタイルに従ってください。エッジで生活したい場合、 dev
ブランチは常にmaster
よりも「最新」です。