サーバーとデータベースの連携 職業訓練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()>(接続の解除)が実行されるためです。
----------------------------------------------------------------------------
今日はこの辺でありがとうございました!
この記事が気に入ったらサポートをしてみませんか?