データベース接続プール
データベース接続プールとは何ですか?
JDBCでは、各オフ時間あなたはConnectionオブジェクトを作成するには、時間とIOリソースの一定量を消費します。これは、Javaプログラムがデータベース間のリンクを確立するため、データベース側がユーザー名とパスワードを確認するために、このリンクのためのリソースを割り当てることで、Javaプログラムは、java.sql.Connectionオブジェクトのリンクなどの代わりに、メモリにロードされなければなりませんそのため、データベース・リンクの確立が高価であり、特にときの同時アクセスの数が多い、訪問サイト一日が100,000であれば、あなたは、リンク解除10万回を作成する必要があり、サイトのサーバー、頻繁に作成し、オフオープンデータベース・リンクは、データベースへのアクセスの効率に影響を与えるにバインドされ、さらにデータベースをクラッシュすることがあります。
頻繁にデータベース・リンクを作成しないようにするには、プログラマは、データベース接続プールの技術を提案しました。データベース接続プールは、アプリケーションが、既存のデータベース・リンクを再利用することを可能にする、配布、管理、およびデータベース・リンクの解放のために責任があるのではなく、再構築します
凡例:
グラフィック:
図からわかるようにデータベースにアクセスするためのアプリケーションプログラムがConnectionから直接作成されていない場合、データベース接続プールは、プールへの接続の特定の数の初期化データベース・リンクを作成しますが、接続プールの接続を「適用」に、接続プールは無料、それが返された場合、接続は、そうでない場合は、新しい接続を作成します。使用後は、接続プールの意志接続回復。そして、データベースアクセスの効率を向上させ、データベース・リンクを作成するために、オンとオフの数を減少させるために、他のスレッドに配信。
DBCPのデータソース
DBCPのデータベース接続プール(データベース接続プール)のショート、オープンソースのApache接続プール内の組織を達成するだけでDBCPデータソース、アプリケーション内の2つのJARパッケージをインポートする必要性を使用する場合、Tomcatの接続プールは、サーバーコンポーネントによって使用されています
- コモンズ-dbcp.jar
- コモンズ-pool.jar
サンプルコード:
コード:
パブリッククラスtestDemo {
/ *
*データ・ソース・オブジェクト、手動設定データソースオブジェクトのプロパティ値を作成するためにクラスを使用して、その後、接続オブジェクトを取得するのBasicDataSourceのBasicDataSourceクラス。
* /
公共の静的なデータソースDS = NULL;
静的{
// DBCPデータソース実装クラスのオブジェクトを取得します。
BasicDataSource BDS =新のBasicDataSource();
//データベースに接続するために必要な設定情報を設定します
bds.setDriverClassName( "はcom.mysql.jdbc.Driver");
bds.setUrl( "JDBCます。mysql:// localhostを:3306 /デモ");
bds.setUsername( "ルート");
bds.setPassword( "123456");
//データベース接続プールの初期化のリンク接続プールパラメータのセット数
(5)へbds.setınitialsiz。
//リンクのセット数最大のアクティブなデータベース接続プール
bds.setMaxActive(5)。
DS = BDS。
}
公共の静的な無効メイン(文字列[]引数)はSQLExceptionが{スロー
//データベースリンクオブジェクトを取得します。
接続CONN = ds.getConnection();
//情報データベースのリンクを取得します。
DatabaseMetaDataのmetaData = conn.getMetaData()。
//プリント情報データベースリンク
System.out.println(metaData.getURL())。
}
}
C3P0のデータソース
C3P0は、データソースにDataSourceインタフェースを実装して最も人気のあるオープンソースのデータベース接続プールの一つであり、標準規格のJDBC2 JDBC3、簡単に拡張し、優れたパフォーマンスをサポートする、よく知られたオープンソースのフレームワークHibernateと春は、データソースで使用されています。C3P0を使用してデータソースを開発する場合、C3P0の必要性は、コアクラスC3P0である実装クラスComboPooledDataSource DataSourceインタフェースを理解するために、データ・ソースの方法は、関連するオブジェクトが提供されます。
サンプルコード:
パブリッククラスtestDemo3 {
公共の静的なデータソースDS = NULL;
静的{
ComboPooledDataSource CPDS =新しいComboPooledDataSource();
{試します
cpds.setDriverClass( "はcom.mysql.jdbc.Driver");
cpds.setJdbcUrl( "JDBCます。mysql:// localhostを:3306 /デモ");
cpds.setUser( "ルート");
cpds.setPassword( "123456");
cpds.setInitialPoolSize(5)。
cpds.setMaxPoolSize(5)。
DS = CPDS。
}キャッチ(例外e){
// TODO:ハンドル例外
新しいExceptionInInitializerError(e)を投げます。
}
}
/ **
* @param argsを
* @throwsのSQLException
* /
公共の静的な無効メイン(文字列[]引数)はSQLExceptionが{スロー
// TODO自動生成されたメソッドスタブ
System.out.println(ds.getConnection())。
}
}