1

ResultSets の場合は簡単です-読んだ直後にそれらを閉じます。問題は Connection と PreparedStatements にあります。これらのリソースをいつ閉じるのが最適かわかりません。

防御的なアプローチでは、データベースでの複雑なアクションごとにそれらを閉じるのが良いようですが、それは、ユーザーがポートレット アクションを呼び出すたびに (たとえば、すべてのページの再読み込み、または MVCPortlet を呼び出す ajax 要求など)、接続を開いて準備済みステートメントをコンパイルする必要があることを意味します。 #serveResource)。

jdbc 接続を管理するより良い方法はありますか? これらすべてのリソースをいつ閉じるのが最適ですか?

ポートレット アクションが呼び出されるたびにデータベース接続とステートメントを設定するのは大したことではないのではないでしょうか?

4

1 に答える 1

1

最も簡単な方法は、このユーティリティ クラス http://docs.liferay.com/portal/6.0/javadocs/com/liferay/portal/kernel/dao/jdbc/DataAccess.htmlです。

開いているすべてのリソースを finally ステートメントで DataAccess.cleanUp() に渡すことができます。実際には、null チェックと例外処理を行うだけです。

頻繁に呼び出される PreparedStatement がある場合は、おそらくリクエスト間で保持できますが、他に何もすることがない場合に検討するのは、一種の後期段階の最適化です。オーバーヘッドは最小限です。

于 2013-05-09T20:21:52.160 に答える