[Java/PostgreSQL]WEBアプリをデータベースに接続する


この記事の内容

Eclipseで開発しているWEBアプリとデータベースを接続する方法

この記事を書いた理由

忘れた時に確認するため

この記事を書いた人の特徴

2011年 国立大教育学部卒(当時、プログラミングに全く興味なし)
大学卒業後、伊勢丹・リクルート等で勤務。
2016年頃〜 独学でプログラミングの勉強をスタート
(Railsでアプリを開発できるようになる)
2018年〜 SEとして勤務

RailsではDBの設定はコマンドを入力すれば自動的に処理できた。
Javaでは、その設定を自分でする必要があるのでその勉強を兼ねてこの記事を書いた。

開発環境

PC: Mac
OS: MacOS Mojave
言語: Java
IDE: Eclipse
DB: PostgreSQL
DB管理ツール: pgAdmin

前提条件

接続先のデータベースについて

・接続先のデータベースは、ローカル環境(ポート:5432)である
・sampleデータベースにはcustomerテーブルが存在する
・customerテーブルには下記のサンプルデータが格納されている

SQL
SELECT * FROM customer;
実行結果
  id  |   name   |        email        | password 
------+----------+---------------------+----------
 0001 | sample1  | [email protected]  | password
 0002 | sample2  | [email protected]  | password
 0003 | sample3  | [email protected]  | password
 0004 | sample4  | [email protected]  | password
 0005 | sample5  | [email protected]  | password
 0006 | sample6  | [email protected]  | password
 0007 | sample7  | [email protected]  | password
 0008 | sample8  | [email protected]  | password
 0009 | sample9  | [email protected]  | password
 0010 | sample10 | [email protected] | password
(10 rows)

Eclipseで開発しているWEBアプリについて

・このWEBアプリは、動的WEBプロジェクト(Dynamic WEB Project)として作成
・このWEBアプリは http://localhost:8080/sample/sample2 にアクセスすることを想定する

コード例

Sampleapp2.java
package jp.co.sample;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Sampleapp2 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<style>table,th,td,tr{border: 1px solid black};</style>");
        out.println("<body>");
        out.println("<h1>Sampleapp by Java Servlet</h1>");
        out.println("</body>");
        out.println("</html>");

        String url = "jdbc:postgresql://localhost:5432/sample";
        String user = "USERNAME";
        String password = "PASSWORD";

        try{
            Class.forName("org.postgresql.Driver");
            System.out.println("データベースの接続に成功しました");
        } catch(Exception e) {
            e.printStackTrace();
        }


        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            conn.setAutoCommit(false);
            Statement stmt = conn.createStatement();
            String sql = "SELECT * FROM customer";
            ResultSet rset = stmt.executeQuery(sql);

            out.println("<table>");
            out.println("<tr><th>ID</th><th>UserName</th><th>Email</th></tr>");

            while(rset.next()) {
                out.println("<tr><td>" + rset.getString("id") + "</td><td>" + rset.getString("name") + "</td><td>" + rset.getString("email") + "</td></tr>");
            }

            out.println("</table>");

        } catch (Exception e) {
            System.out.println("Exception: " + e.getMessage());
        }


    }
}

ポイント

WEB-INF/lib ディレクトリに .jarファイル を配置する

実行結果

WEBアプリのサーバーを実行し、http://localhost:8080/sample/sample2 にアクセスする

Eclipseのコンソール
5月 12, 2019 4:26:33 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server version name:   Apache Tomcat/9.0.14

(中略)

5月 12, 2019 4:26:35 午後 org.apache.catalina.startup.Catalina start
情報: サーバーの起動 [1,215]ms
データベースの接続に成功しました

ブラウザで画面を確認

データベースに格納したデータがブラウザに表示されていることが確認できた。

今後やりたいこと

データの保存・編集・更新・削除
AWS上に置いたDBとの連携

感想

Railsではコマンド数行書いて実行すれば自動的に設定できるDB.
Javaでは一つ一つ自分で設定しなければならないのが面倒。