サーバーとデータベースの連携 職業訓練63日目

JDBCと接続プール

・JDBC

JDBCとはJavaプログラムからデータベースに接続するために用意されたAPIです。JDBCを利用することでJavaのコード上でSQLを作成しデータベースの操作を行うことができます。下のような関係になります

<Java>⇄<JDBC>⇄<データベース>

・接続プール

接続プールとはJavaプログラムとJDBCの間にプロジェク内のコンテナ(フォルダのようなもの)にあらかじめデータベースに接続されている状態で待機している状態のことを言います。また複数用意しておくことができます。

<Java>⇄<接続プール>⇄<JDBC>⇄<データベース> 

メリットとしてはすでに接続されているものなので、処理が早いことが挙げられます。また複数のアプリケーションでこの接続プールを使い回すことができます。

コンテナで定義された接続プールをJavaアプリケーションから参照できるように、コンテナではJNDIというインターフェースを利用します。

接続プールの作成

接続プールはxmlファイルで作ります。保存場所はWebContent/META-INFの中です。ファイル名は「context.xml」とします。

ファイルの構成としては

<Context><Resource----/></Context>

↑のようになります。Resourceの---の部分にソースを記述していきます。記述する内容をまとめていきます。

・driverClassName="ドライバクラス名"

・initialSize="初期接続数"

・maxidle="最大待機数"

・maxWaitMillis="データベース接続維持時間。-1の場合は無制限"

・name="コンテナ内で管理するJNDIの名称"

・type="リソースのクラス指定。基本的にDataSourceクラス、を利用"

・url="使用するデータベースのURL"

・username="データベースにログインするためのユーザーID"

・password="データベースにログインするためのパスワード"

・deaultAutoCommit="trueかfalse"

↑基本的にfalse。falseの場合データの追加をした後に取り消しや確定の操作ができる。トランザクション管理を参照。

接続プールの利用

ここからはJavaサーブレットになります。

⑴接続プールのリソースの取得

InitialContext initialContext=new IntialContext();

InitialContextクラスのinitialContextインスタンスを生成。JNDIを経由して先ほどのリソースを取得。

⑵接続プールを取得

initialContext.lookup="java:cimp/env/jdbc/使用しているデータベース"

jdbcより前は定型文。

⑶データベースに接続

try{Connection cn=dataSource.getConnection()){

}catch(SQLException){

throw new ServletException(e)

}

↑これで1セットです

Connection cn=dataSource.getConnection()で接続をします。

try()で囲んでいる理由としてはtry()で囲んでいる部分が正常に終了した場合でも、エラーをキャッチした場合でもどちらも<connection.close()>(接続の解除)が実行されるためです。

----------------------------------------------------------------------------

今日はこの辺でありがとうございました!






この記事が気に入ったらサポートをしてみませんか?