［Mac/Java/Eclipse/PostgreSQL］Javaアプリとデータベースを接続する

### この記事で書くこと
・MacにインストールしたEclipseでJavaアプリを作成の際に、Javaアプリとデータベースを接続する方法

### この記事を書いた人の特徴
・RailsでWEBアプリを作成した経験あり
・Javaで１からWEBアプリを作成した経験はなし

Railsアプリ作成時には、例えば

```command:RailsでのDB設定コマンド
rails model User name:String email:String
rails:db mingrate
```
を実行すると自動的に接続ができる。

それとは対照的に、Javaアプリではひとつひとつ自ら設定する必要がある。

今回、その設定を勉強するためにこの記事を書いた。


### 開発環境

|       |        |    備考    |
|-----------------|------------------|------------------|
| PC             |              MacBook Air |               |
| OS           |            MacOS Mojave | Version: 10.14.4             |
| 言語            |              Java | Version: 12.0.1               |
| IDE               |                Eclipse | Eclipse IDE for Enterprise Java Developers. Version: 2019-03 (4.11.0)                |
| WEBサーバー             |             Apache Tomcat |        Version: 8     |
| DB             |             PostgreSQL |        Version: 11.2     |
| DB管理ツール          |           pgAdmin | Version: 4.5          |
| ブラウザ          |           Chrome | バージョン: 73.0.3683.103          |


※本当はAWSのRDSに置いたDBに接続したかったけど、上手くいかなかったため今回はローカルのDBに接続しました
※Eclipseの言語は英語です。

### 前提条件

データベース「sample」に、「User」テーブルを用意
「User」テーブル内に下記のデータが格納されている

```SQL:SQL
SELECT * FROM USER;
```

pgAdmin上でのSQL実行結果
![スクリーンショット 2019-04-20 21.22.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/fe555a58-a667-e2a0-6606-88e2e6867916.png)

### ファイルの配置
動的WEBプロジェクト「sample」内に、データベースの接続処理を書く「Sampleapp6.java」を配置
![スクリーンショット 2019-04-20 21.54.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/1d67c372-0d62-95d2-6fee-f42f4e617af5.png)

### コード例
```java:Sampleapp6.java
package jp.co.sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Sampleapp6 {
	
	public static void main(String[] args) throws Exception {
		
        String url = "jdbc:postgresql://localhost:5432/sample";
        String user = "sampleデータベースのユーザー";
        String password = "samleデータベースのパスワード";

		
		// データベースに接続
		try(Connection conn = DriverManager.getConnection(url,user,password)) {
			
			//SELECT文を準備
			String sql = "SELECT * FROM CUSTOMER";
			PreparedStatement pStmt = conn.prepareStatement(sql);
			
			ResultSet rs = pStmt.executeQuery();
			
			//結果を表示
			while (rs.next()) {
				String id = rs.getString("ID");
				String name = rs.getString("NAME");
				String email = rs.getString("EMAIL");
				
				System.out.println(id + " " + name + " " + email);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	};
```

### ポイント
**JDBCドライバを適用する**

JDBCドライバをダウンロードし、保存（今回はデスクトップに保存）
https://jdbc.postgresql.org/download.html
![スクリーンショット 2019-04-20 22.10.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/f41fd15a-9bce-457e-e324-d4c631529d38.png)


「sample」プロジェクトを右クリック → 「Properties」を選択
![スクリーンショット 2019-04-20 21.58.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/97d71773-b40f-5f65-7800-e1cff4a35139.png)


「Java Build Path」を選択 → 「Modulepath」にデスクトップに保存した外部ビルドパスを適用
![スクリーンショット 2019-04-20 22.02.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/39bdfb75-de18-3287-4680-ec59cd5858dd.png)


### 処理実行結果
下記画像はEclipseのコンソールです
データベースからデータを取得していることが確認できました。
![D4mCbABUYAAPC_e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/4ca0f601-4d28-8b91-4940-36f7b0aa75a7.png)


### 感想
Railsではデータベースの接続は、コマンド数行を実行すればいい。
Javaは全部自分で設定しなければならない。

DBの接続方法をネットで調査したが、どの情報が正しいかわからず独学では難しいと感じた。


### 今後すること
Javaアプリに、データの保存・編集・更新・削除処理を実装する方法


### 参考文献
国本大悟「スッキリわかるサーブレット&JSP入門 第２版」,株式会社インプレス,2019/03/21初版