【Java/Tomcat/Eclipse】データソースを使ってDBに接続

Javaから生JDBCでDBに接続するのはそろそろ卒業しようと思い、Tomcatの機能であるデータソースを通して接続してみた。

データソースを使うメリット

  • Javaのコードを書き換えずにデータソースの切り替えができる。
  • Tomcatがコネクションプールの管理をしてくれる。
    (DBへの接続と切断の回数を減るのでパフォーマンスが良くなるなどの恩恵がある)

環境

前提としてこれは他言語経験はあるもののJavaは勉強し始めて2か月目のひよっこが作った勉強用の環境です。

Windows 10
Pleiades All in One Eclipse 2019-06
Java 11
Tomcat 9
MariaDB 10.1 (Pleiades All in One に入ってるxamppのやつ)

プロジェクトは動的 Web プロジェクトというテンプレートから作ったもの。

やり方

JDBCドライバのダウンロード・配置

まずはJavaからDBMSに接続するために必要なJDBCドライバをダウンロードする。
Mavenなどのツールを使うのが普通かもしれないが、ここでは手動で行う。

「MariaDB JDBC」「MySQL JDBC」とかで検索しよう。
MariaDBならここ。Java 8用って書いてるけど後方互換あるからOK
https://mariadb.com/kb/en/library/about-mariadb-connector-j/
ちなみにOracle DBのJDBCは本体に付属している。

ダウンロードした.jarファイルは適当なディレクトリに配置しておく。
(後でEclipseからパスを指定するのでダウンロードフォルダに放置しない)

JDBCドライバの指定

TomcatがDBMSに接続する際に必要になるJDBCがどのディレクトリにあるか、Eclipseで指定する。

Eclipseの上のメニュー→実行→実行構成→Apache Tomcat→ローカルホストのTomcat→クラスパス→ユーザー・エントリーを開き、外部JARの追加からダウンロードした.jarファイルを指定する。

server.xmlの書き換え

Eclipseのプロジェクト・エクスプローラーからServers→ローカルホストのTomcat→server.xmlを開き、Contextタグの部分を書き換える。

<!-- 変更前 -->
<Context docBase="PROJECTNAME" path="/PROJECTNAME"
		reloadable="false"
		source="org.eclipse.jst.jee.server:PROJECTNAME" />


<!-- 変更後 -->
<Context docBase="PROJECTNAME" path="/PROJECTNAME"
		reloadable="false"
		source="org.eclipse.jst.jee.server:PROJECTNAME">
	<Resource name="jdbc/DATASOURCENAME" auth="Container"
			type="javax.sql.DataSource"
			username="USERNAME"
			password="PASSWORD"
			driverClassName="org.mariadb.jdbc.Driver"
			url="jdbc:mariadb://localhost/DATABASENAME" />
</Context>

driverClassName, urlの値や、USERNAME, DATABASENAMEなどは、使うDBMSや環境に応じて書き換える。

Javaから接続してみる

try {
	InitialContext ctx;
	ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/DATASOURCENAME");
	return ds.getConnection();
} catch (Exception e) {
	System.out.println("DBと接続できませんでした。");
	e.printStackTrace();
}

コメントを残す

メールアドレスが公開されることはありません。