#6 SpringでOracleデータベースに接続する

# 前提条件

1\. 必要インストール
　(1) [Eclipse 2022](https://mergedoc.osdn.jp/) 
　(2) [Oracle SQL Developer 21.2.1](https://www.oracle.com/jp/database/sqldeveloper/technologies/download/)
　(3) [Oracle Database 21c Express Edition](https://www.oracle.com/jp/database/technologies/xe-downloads.html)
　(4) [Oracle Database JDBC driver](https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html)


2\. プロジェクトの設定内容
　(1) Eclipseでプロジェクトを立ち上げる(ファイル ＞ 新規 ＞ Spring スターター･プロジェクト)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/04b06221-0998-31ab-6c8c-9ded19dfff50.png)

　(2) 依存関係を設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/9a39197e-a2ea-c968-0884-9f5bf35cd339.png)

:::note info
今回の記事では環境設定とテストのみなので、新たに追加するのはLombok、Spring DataJDBC、Oracle DriverのみでOK
:::
<br>

　(3) テーブルを作成する(SQL developerを用いて作成)
```sql:sample
CREATE TABLE Sample (
    Id NUMBER PRIMARY KEY,
    Name VARCHAR2(50) NOT NULL,
    Gender NUMBER(1) NOT NULL,
    Age NUMBER(3) NOT NULL
);

INSERT INTO Sample VALUES(1, 'Sato', 0, 20);   /* 0='男性', 1='女性' */
INSERT INTO Sample VALUES(2, 'Suzuki', 1, 21); /* 0='男性', 1='女性' */
INSERT INTO Sample VALUES(3, 'Tanaka', 1, 22); /* 0='男性', 1='女性' */
```
<br>

**Sampleテーブル** 
|   | ID | NAME | GENDER | AGE |
|:-:|:-:|:-:|:-:|:-:|
|  1|  1 |  Sato |  0 |  20 |
|  2|  2 |  Suzuki |  1 |  21 |
|  3|  3 |  Tanaka |  1 |  22 |
<br>

　(4) 接続するための設定を記述する
```java:application.properties
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username={username} 
spring.datasource.password={password}
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
```

:::note
Oracleデータベースのポート番号はデフォルトでは"1521"らしい
ユーザー名、パスワードはインストール時に設定したものを使用
:::

<br>

　(5) テスト
最後にテスト用のファイルを作成します。
```java:OracleRepository.java
package com.example.repository;

import org.springframework.data.repository.CrudRepository;

import com.example.model.Sample;

public interface OracleRepository extends CrudRepository<Sample, Integer> {
}
```
```java:Sample.java
package com.example.model;

import org.springframework.data.annotation.Id;

import lombok.Data;

@Data
public class Sample {

	@Id
	private Integer id;
	private String name;
	private Integer gender;
	private Integer age;
}
```
```java:SpringOracleSampleApplication.java
package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.example.model.Sample;
import com.example.repository.OracleRepository;

@SpringBootApplication
public class SpringOracleSampleApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringOracleSampleApplication.class, args)
		.getBean(SpringOracleSampleApplication.class).execute();
	}
	
	@Autowired
	private OracleRepository repository;
	
	public void execute() {
		Iterable<Sample> samples = repository.findAll();
		for(Sample sample : samples) {
			System.out.println(sample);
		}
	}
}
```
コンソール画面にテーブルから取得したデータを表示させることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/ef0a4858-c55f-eef5-47bc-643152ede3b3.png)

## まとめ
Oracleデータベースに接続するための手順をまとめると
1. 依存関係にOracle Driver追加(Lombokは必須ではないが、あった方が絶対良い)
1. テーブルを作成
1. application.propertiesに設定を記述