IT技術の痒い所に手が届く

詳細

×閉じる

コネクションプール無し・有りのイメージ

DB接続の肝をイメージしておく

Webシステムの運用上、DB接続は必須ですが、
主な接続方法は二つ。

コネクションプールは、
DB情報を設定ファイルに書くとDB接続が速くなるというもの。

何故なら、コネクションプール無しの場合は、1回毎にDB接続を行う。
一方で、コネクションプール有りの場合は、接続がプーリング(保持)されるので、

接続コストが削減されて速くなる。

教科書には、そう書いてあります。

コネクションプール無し・有りのイメージ

教科書には書いてありますが、イメージわかないですよね。
そこでイメージを動画にしてみました。再生ボタンをクリックしてください。

こんなイメージをわかせると、初心者の方でも理解しやすいかなあと。
(著作権フリーですので、この動画は使って頂いてOKです)

接続設定

参考までに、コネクションプール有りの接続設定を記載します。
context.xmlというファイルを作ると、 そのプロジェクトはコネクションプールが適用されます。

以下がcontext.xmlの中身。

            
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Context>

<Context reloadable="true">
<Resource name="jdbc/searchman"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/prefecture?
 serverTimezone=JST&amp;
 characterEncoding=UTF-8"
username="pre"
password="pass"
maxTotal="5"
maxIdle="30"
maxWaitMillis="10000"
validationQuery="SELECT 1"
/>
</Context>
                                                            

設定の要点

jdbc/searchman
jdbc/リソース名の形式で記述され、JNDIリソースと言います。
このJNDIリソースを、プログラムで java:comp/env/jdbc/リソース名で使用します。

このJNDIリソースが、DAOで使われています。

jdbc:mysql://localhost:3306/prefecture?
localhostのMySQLに3306ポートで、prefectureDBに接続。

username="pre" password="pass"
ユーザー名とパスワードです。

maxTotal="5"
最大接続数です。今回は5としました。

maxIdle="30"
最大過剰(待ち)接続数です。最大接続数を超えて待てる数です。今回は30としました。

maxWaitMillis="10000"
最大待ち時間です。今回は10000ミリ秒としました。

validationQuery="SELECT 1"
プール内のコネクションを有効にするの検証用クエリです。おまじないと思ってください。

この設定ファイルをプロジェクト/WebContent/META-INFの下に配置します。

Copyright(c) 2005-2022 SearchMan Sato . All Rights Reserved. 特定商取引に基づく表示