データベース接続プール
1.コンセプト:実際には、コンテナ(コレクション)、貯蔵容器のデータベース接続。
優れたシステムの初期化は、コンテナが作成されると、コンテナは、完成へのユーザーアクセスの後、接続オブジェクトは、コンテナに返され、ユーザーはコンテナから接続オブジェクトを取得するためにデータベースにアクセスするための接続オブジェクトのいくつかのために適用されます。
2.利点:
1.節約資源
2.ユーザーのアクセス効率
3.実装:
1.標準インターフェース:データソースjavax.sqlパッケージの下の
方法1:
*接続を取得:のgetConnection()
*リターン接続:Connection.close()。接続オブジェクトの接続は、接続プールから取得することであるならば、あなたは接続を閉じないであろう、Connection.close()メソッドを呼び出します。しかし、戻り接続
2.一般的に、我々はそれを理解していない、達成するために、データベース・ベンダーがある
データベース接続プールの技術:1. C3P0を
2ドルイド:アリババが提供するデータベース接続プールの実装技術、
4 C3P0:データベース接続プールの技術
*は、ステップ:
1.インポートジャーパッケージ(2)c3p0-0.9.5.2.jar mchange-コモンズ-のJava-0.2.12.jar、
*データベースドライバのjarパッケージをインポートすることを忘れないでください
2.設定ファイルの定義
*名前:c3p0.properties-config.xmlのかC3P0
*パス:直接srcディレクトリ内のファイルにします。
3.コアオブジェクトデータベース接続プール・オブジェクトの作成ComboPooledDataSource
4が接続されます:のgetConnection
コード:
//オブジェクトをデータベース接続プールを作成し
たDataSource ComboPooledDataSource新しい新しいDS =();
//接続オブジェクトの取得2.
接続ds.getConnectionコネティカット=();
パブリッククラスC3P0demo1 { 公共の静的な無効メイン(文字列[] argsが)のSQLException {スロー // 。1データベース接続オブジェクトを作成し 、データソースDS = 新しい新しいComboPooledDataSourceを(); // 2は、接続オブジェクトを取得 接続コネティカット= ; ds.getConnection() のSystem.outを.println(コネチカット); } }
5.ドルイド:アリババが提供するデータベース接続プールの実装技術、
1ステップ:
1.インポート1.0.9.jarジャーパッケージドルイド
2.カスタムプロファイル:
*プロパティの形である
任意の名前を入れることができます呼び出すことができます*任意のディレクトリに
3.設定ファイルをロードします。プロパティ
4.データベース接続プール・オブジェクトは:DruidDataSourceFactoryにより植物を取得するための
接続を取得する5.:のgetConnection
*コード:
//ロード・プロファイル3.
プロパティProの新しい新しい=プロパティ();
のInputStream DruidDemo.class.getClassLoaderは、IS =()。 getResourceAsStream( "druid.properties");
pro.load(IS);
... 4 //接続プールは、オブジェクトを取得
データソースDruidDataSourceFactory.createDataSource DSを=(プロ);
... // 5が接続されて取得します
接続CONN = ds.getConnection();
クラス定義ツール
1クラスJDBCUtilsを定義し
、2は静的コードブロック装荷構成ファイルを提供する接続プール・オブジェクトを初期化する
方法を提供
1.接続方法を得る:データベース接続プールを介して接続を取得する
2.解放リソース
3.接続プールを得る方法
1 パブリッククラスJDBCUtils { 2 3。 // 1。定義メンバ変数のDataSource。 4つの。 プライベートデータソース静的DS; 5 。6 静的{ 7。 試し{ 8。 // 1。読み込み設定ファイル。 9。 プロパティプロ= 新しい新しいプロパティ(); 10 。プロロード( 。JDBCUtils.class.getClassLoader()getResourceAsStream( "druid.properties")); 11 // 2 。データソース取得し 12である DS = DruidDataSourceFactory.createDataSource(PRO); 13れます }キャッチ(IOExceptionを電子){ 14 e.printStackTrace(); 15 }キャッチ(例外e){ 16 e.printStackTrace(); 17 } 18 } 19 20 / * * 21 *获取连接 22 * / 23 パブリック静的接続のgetConnection(){SQLExceptionがスロー 24 リターンds.getConnection(); 25 } 26 27 / * * 28 *释放资源 29 * / 30 公共静的ボイド近いです(ステートメントSTMT、接続CONN){ 31 / * IF(!STMT = NULL){ 32 のtry { 33 stmt.close()。 34 }キャッチ(のSQLException E){ 35 e.printStackTrace(); 36 } 37 } 38 39 (connの!= NULL){もし 40 試み{ 41 はconn.close(); //归还连接 42 }キャッチ(のSQLException E){ 43 e.printStackTrace(); 44 } 45 } * / 46 47 クローズ(ヌル、STMT、CONN)。 48 } 49 50 51 公共静的ボイド近い(のResultSet RS、ステートメントSTMT、接続CONN){ 52 53 54 であれば(RS != NULL ){ 55 のtry { 56の RS。近いです(); 57 }キャッチ(のSQLException E){ 58 e.printStackTrace(); 59 } 60 } 61 62 63 であれば(STMT != NULL){ 64 試し{ 65 のstmt。近いです(); 66 }キャッチ(のSQLException E){ 67 e.printStackTrace(); 68 } 69 } 70 71 場合(connの!= NULL ){ 72 のtry { 73 CONNを。近いです(); // 归还连接 74 }キャッチ(のSQLException E){ 75 e.printStackTrace(); 76 } 77 } 78 } 79 80 / * * 81 *プレゼント接続プール 82 * / 83 84 公共の静的データソースをgetDataSource(){ 85 リターン DS; 86 } 87 88 }
JDBC春
* Springフレームワークの簡単なパッケージJDBC。提供簡素化JDBCTemplate目標JDBC開発
*手順:
1.インポートのjarパッケージ
2. JdbcTemplateオブジェクトを作成します。データソースのデータソースに依存
* =テンプレートJdbcTemplate新しい新JdbcTemplate(DS);
JdbcTemplate CRUD操作を完了するために3メソッド呼び出し
*更新():DML文が実行されます。ステートメントを変更、削除、追加
* queryForMap():クエリの結果は、マップセット、キーとしてカラム名、設定されたこのパッケージを置くためにマップとして記録された値の値としてパッケージ設定されている結果
*注:このメソッドは、クエリ結果の長さを設定し、唯一の1。
* queryForList():結果セットリスト封入のクエリの結果セット
*注:地図に設定された各パッケージレコード、リストにロードされた後、設定されたマップセット
*クエリ():クエリ結果、結果JavaBeanのようにカプセル化
RowMapperの:*クエリパラメータ
我々は、一般的にBeanPropertyRowMapper実装クラスを使用します*。自動包装完了するためのJavaBeanデータ
*新しいBeanPropertyRowMapper <タイプ>(タイプの.class)
* queryForObject:クエリ結果は、結果がオブジェクトをラップしています
重合に使用される*一般的なクエリ機能
1 パブリッククラスJDBCTemplateDemo1 { 2 公共の静的な無効メイン(文字列[] 引数){ 3。 // 1は、JARパッケージに導入した。 4 // JDBCTemplateは、オブジェクトを作成する2 5。 JdbcTemplateテンプレート= JdbcTemplate(JDBCUtils.getDataSource())新しい新規; 6は // メソッドを呼び出します 7 8 文字列SQL = " 更新 ユーザーに SETのユーザ名= ' Guojia ' WHERE以上のIDを述べた= ?"; 9 10 int型の COUNTを = テンプレート。更新(SQL、1 )。 11 のSystem.out.println(カウント)。 12 } 13 }