2012-03-15 4 views
0

Hibernateでは、Connectionプールを使用してその内部の接続を管理できます。プール内の接続の状態は開いていますか?それとも閉鎖されていますか?接続が開いている場合は、セキュリティ上の脅威となり、データベースに対する脅威となります。Connectionプールの使用は何ですか?それは有害ですか?

私たちはデータベースとしてOracleを使用しています。そのため、Oracle内部で未使用の接続を切断する内部メカニズムがありますか?

答えて

2

に設定されているため、アプリケーションが新しい接続を開こうとするたびに、プールはすでに開いている接続を透過的に返します。これは毎回新しい接続を開くよりはるかに高速です。

データベースの観点から見ると、アプリケーションには開いているがアイドル状態のデータベース接続があるようです(SQLコンソールを開いてクエリを実行しない場合など)。

私はセキュリティ専門家ではありませんが、Oracleの接続とTCP/IPスタックの安全性についてもわかりません。しかし、アイドル状態の接続がアプリケーション間で数秒間続くという事実は問題ではありません。何百万ものアプリケーションがデータベース接続プーリングを使用しています(実際には、は使用できません)はありません。プールされた接続は、依然としてデータベースベースの認証と認証の対象であることに注意してください。

それはずっとあなたを心配している場合(または、データベース接続は、インターネット上でイントラネットでない場合、トンネリングを考えてみましょうか、データベース接続を暗号化する。

+0

データベース破損はどうですか?データベースファイルが壊れていますか – Chan

+0

@ Duli-chan:接続プーリングとは関係がありません。また、RDBMSはACIDの原則の上に構築されています。腐敗が発生するべきである。 –

-2

これらのすべての問題は、使用しているコードに対して透過的です。この質問は、自分で接続プールを実装した場合にのみ行われます。よく知られているもの(c3p0など)を使用している場合は、DataSourceインターフェイスに対してコーディングしているため、その問題に触れないでください。

(これは、このライブラリがバグ、メモリリーク、orphaneオープン接続のいずれかでないことを意味しません)。

3

プール内の接続は開いています(プールの実装によっては、アイドル状態の接続が閉じられることがあります)。新しいデータベース接続を作成して開くことはコストがかかることがあります。プールを使用してこのコストを削減します。

接続プーリングを使用することで、これ以上のセキュリティ上の脅威はありません。いずれの場合も、アプリケーションには引き続きデータベースへのアクセスレベルと同じレベルがあります。最初に接続を開く必要があるかどうかにかかわらず、同じレベルのダメージを与えることができます。

+2

また、実装に応じて、プールが古いのか死んでクリーンアップ機能を持っています – cjstehno

関連する問題