DB接続の肝をイメージしておく
Webシステムの運用上、DB接続は必須ですが、
主な接続方法は二つ。
コネクションプールは、
DB情報を設定ファイルに書くとDB接続が速くなるというもの。
何故なら、コネクションプール無しの場合は、1回毎にDB接続を行う。
一方で、コネクションプール有りの場合は、接続がプーリング(保持)されるので、
接続コストが削減されて速くなる。
教科書には、そう書いてあります。
接続設定
参考までに、コネクションプール有りの接続設定を記載します。
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&
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の下に配置します。