4

現在、クエリごとに、Prepared Statement が作成され、再利用されています。接続プールを使用していません。C3P0 は、同じライブラリとして広く推奨されています。

ただし、PreparedStatement は接続に関連付けられているためです。プールされた環境では、接続がプールに返され、PreparedStatement が事実上使用できなくなります。この結論について私は正しいですか?Prepared Statement と接続プーリングを一緒に使用する方法はありますか?

更新: これはスタンドアロン アプリケーションです。したがって、接続プーリングを正しく行うためだけにフレームワークを使用することはできません。

4

3 に答える 3

1

使用するプーリングメカニズムによって異なります。ほとんどのJavaEEアプリサーバーには、プール内の各接続とともにプリペアドステートメントキャッシュがある接続プールの実装があります。したがって、準備されたステートメントは接続と同様に再利用されます。この機能を備えたスタンドアロンのプーリングメカニズムについては知りません。

于 2009-05-02T07:35:19.323 に答える
0

接続を閉じると PreparedStatement は「失われる」と思いますが、同じ接続が開いている限り、同じ PreparedStatement を使用できるはずです。JdbcTemplate を使用してこれを行うには、Spring を確認する必要があります。それはすべて抽象化されるので、心配する必要はありません。DataSource を渡すだけで準備完了です。

c3p0 を DataSource オブジェクトとして使用する方法は次のとおりです: http://forum.springframework.org/showthread.php?t=13078

次に、JdbcTemplate Bean を作成し、データソースをコンストラクター引数として渡し、使用している DAO オブジェクトに JdbcTemplate を注入します。

于 2009-05-02T05:03:17.520 に答える
0

「High Performance MySQL」のこの資料を見たとき、Java で設定した以上の何かを MySQL の構成に加える必要があると思いました。my.cnf ファイルを編集しましたか?

また、このトピックに関する他のSOの質問を見ましたか?

編集: Spring は、スタンドアロン アプリケーションに完全に適したプーリングに役立つフレームワークの 1 つです。

于 2009-05-02T12:12:00.890 に答える