1

JDBC接続プールをサポートするアプリケーションサーバー上にWebアプリケーションまたはWebサービスがあるとしましょう。

Connectionスレッドごとまたはクエリごとに新しいものを取得する必要がありますか?

ありがとう!

4

2 に答える 2

9

うまくいけば、トランザクション単位の作業単位でそれらを取得しているはずです。

クエリごとは、複数のクエリにまたがる論理的な作業単位がシステムに存在しないことを意味します。(たぶんそれは本当ですが、あなたはまだ未来について考えたいかもしれません!)

スレッドごと(スレッドの存続期間全体ではなく、リクエストスコープを意味すると思いますか?)は、おそらく絶対に必要な期間よりも長く保持することになりますが、トランザクションをより適切に管理できます。(そして、それは多くの主要なフレームワークが長い間機能してきたか、機能していた方法です。グーグルフーを実行したい場合は、Open Entity Manager InViewとして知られているパターンです)

これを単一のスレッドに無期限に割り当てるということは、アクティブなリクエストプロセッサの最大数がデータベースプールの最大サイズに制限されることを意味します。これは、スケーラビリティの明確な失敗です。

于 2010-10-20T20:29:27.453 に答える
1

スレッドごと

新しいリクエストごとに新しい接続が取得されます(新しいスレッド=新しいリクエスト)。各クエリの後で接続を再利用できるため、クエリごとに新しい接続を取得する必要はありません。

于 2010-10-20T20:38:44.147 に答える