バッチのデバッグメモ

## はじめに
バッチのデバッグ例の備忘記録。
Eclipseでjavaを使用しmavenでビルド、バッチ実行でのデバッグをメモ。

## 現状のファイル構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176603/c17bf596-757e-4714-8f26-008c42ca6969.png)


## ビルドとできるファイル名と場所
`mvn clean package` でビルドしjarファイルができる。

### `mvn clean package` の意味と動作

#### 🔹 `clean`
- `target/` ディレクトリを削除して、古いコンパイル結果や生成物をクリーンにします。

#### 🔹 `package`
- `pom.xml` に基づいてプロジェクトをビルドし、
- ソースコードをコンパイルし（`src/main/java`）、
- テストを実行し（`src/test/java`）、
- `target/` フォルダ内に **JARファイル**（またはWARなど）を作成します。


### 生成されるファイル

`pom.xml` が以下のような設定なら：

```xml
<groupId>com.example</groupId>
<artifactId>batch-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
```

このようなファイルが `target/` に生成されます：

```
target/
├── batch-demo-1.0-SNAPSHOT.jar   ← ← これが成果物（実行ファイル）
├── classes/
│   └── ...                       ← コンパイルされた `.class` ファイル群
├── test-classes/
│   └── ...                       ← テスト用 `.class` ファイル
└── ...
```


### 実行方法（JARファイルをコマンドラインから）

```bash
java -cp target/batch-demo-1.0-SNAPSHOT.jar com.example.batch_demo.BatchProgram
```

引数を渡す場合は：

```bash
java -cp target/batch-demo-1.0-SNAPSHOT.jar com.example.batch_demo.BatchProgram arg1 arg2
```

## Eclipseで ソースの`BatchProgram.java` をデバッグする手順

### ◆ 1. ブレークポイントを設定
- `BatchProgram.java` をエディタで開いて、
- `main` メソッドの `System.out.println("Batch program started...");` の左の灰色部分をクリック → ●マークが付きます（ブレークポイント）

### 最終的なデバッグ例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176603/c72413b3-bde0-4eff-a16a-5fbd9aa99414.png)

### ◆ 2. デバッグ構成を作成
1. メニューから  
　`実行 > デバッグ構成` を選択  
2. 左のリストから  
　「Java アプリケーション」→ `batch-demo` を右クリック → 「新規作成」  
3. 「メイン」タブで以下を設定：
   - プロジェクト: `batch-demo`
   - メイン・クラス: `com.example.batch_demo.BatchProgram`
4. 「引数」タブに移動して：
   - プログラム引数: `arg1 arg2` など（必要があれば）
5. 「適用」→「デバッグ」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176603/25bba54a-433d-4aaf-a419-6e725c37d0d0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176603/dd12dafd-9e78-4478-a15a-a31cf26fcd52.png)


### ◆ 3. デバッグ実行して確認
- `デバッグ` ボタンを押すと、プログラムがブレークポイントで停止します。
- 「変数」ビューで `args` の中身や変数の状態を確認できます。
- ステップ実行もできます：
  - F5：ステップイン（メソッドに入る）
  - F6：ステップオーバー（次の行に進む）
  - F8：ブレークポイントまで続行

---

###  補足：run.batではなくEclipseから直接起動
Eclipse でデバッグするときは `run.bat` は使わず、**Eclipse のデバッグ構成から直接実行**します。  
（`run.bat` はコマンドライン用なので Eclipse のブレークポイントに反応しません）

```run.bat
@echo off
echo Starting the batch program...
java -cp target/batch-demo-1.0-SNAPSHOT.jar com.example.batch_demo.BatchProgram arg1 arg2
echo Batch program finished.
pause
```


## DB設定箇所例
**JavaバッチにおけるDB接続先の設定箇所**を整理してご説明します。

## 一般的なDB接続設定の場所

JavaバッチのDB接続設定は、以下のいずれかに定義されていることが多いです。

| 設定ファイル例 | 用途／中身の例 | フレームワーク依存 |
|----------------|----------------|-------------------|
| `application.properties` or `application.yml` | Spring Bootの場合 | `spring.datasource.url=...` |
| `persistence.xml` | JPA (Hibernateなど) | `<connection-url>jdbc:...` |
| `context.xml` | TomcatなどのJNDI設定 | `<Resource name="jdbc/..." ...>` |
| `db.properties` / `jdbc.properties` | 独自フレームワークやバッチ用 | `jdbc.url=...` |
| Javaソース直書き（非推奨） | `DriverManager.getConnection(...)` | テストコードなど簡易実装 |

ありがとうございます、**Spring（おそらく Spring Boot）ベースのバッチ**であれば、**DB接続設定の切り替えは明確に管理されています**！

以下に、「SpringバッチでのDB接続先の変更方法」を具体的にまとめました👇

---

###  Spring Boot バッチでの DB接続設定場所

Spring Boot では通常、以下のようなプロパティファイルに設定されています：

### `src/main/resources/application.properties` または `application.yml`

#### `.properties` の例：
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```

#### `.yml` の例：
```yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: dbuser
    password: dbpass
    driver-class-name: com.mysql.cj.jdbc.Driver
```

この設定が**バッチの実行時に使用される接続先**になります。