
たけ坊
データベースを扱うバックエンドについて触れていくよ!

フロントエンドと役割を分けて、バックエンドでデータベースを扱うんですね!

たけ坊
まずは環境構築から!
前提
ここまでの流れは下記を参照です!

【Angular v19 + SpringBoot 05】Angular側のAPI連携
たけ坊バックエンドからデータを取得するための準備を進めていくよ!フロントエンドとバックエンドの連携ができるんですね!たけ坊バックエンドはいったんおいて、フロントエンドの内容を進めるよ!前提これまでの流れを知りたい人はこちら!APIを呼び出す...
Spring Bootの環境構築
下記のサイトを参考にSpring Bootの環境構築を行います。

VSCodeのDevContainersでSpringBoot環境を構築
次に、下記のサイトを参考にSpring Bootのプロジェクトを作成します。途中入力するグループIDはcom.painlog、Artifact Idはmanagementとしておきます。
「2. ソースコード修正」以降は行わなくてよいです。

VSCode+Spring Boot環境で"Hello World!"
上記まで完了すると、いろいろなフォルダが作成されています。
pain-log-management/
├── .devcontainer/
├── pom.xml
その中にpom.xmlが存在します。その<dependencies>の部分を以下のように書き換えます。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
ひとまずここまでです。
Docker
開発環境をすぐに作成するために、Dockerを活用します。まずは、下記のようなディレクトリ構成でファイルを作っておきます。
pain-log-management/
└── .devcontainer/
├── devcontainer.json
├── docker-compose.yml
├── docker/
│ └── Dockerfile
└── .env
devconteiner.json、docker-compose.yml、Dockerfileを以下のように記入します。
devcontainer.json
{
"name": "management",
"dockerComposeFile": "docker-compose.yml",
"service": "management",
"workspaceFolder": "/management",
"extensions": [
"vscjava.vscode-spring-boot",
"vscjava.vscode-java-pack"
]
}
docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ports:
- "49497:3306"
volumes:
- mysql-data:/var/lib/mysql
networks:
- management-network
management:
build:
context: ..
dockerfile: .devcontainer/docker/Dockerfile
container_name: management
ports:
- "8081:8080"
volumes:
- ../:/management
command: sleep infinity
networks:
- management-network
tty: true
depends_on:
- db
volumes:
mysql-data:
networks:
management-network:
external: false
Dockerfile
FROM mcr.microsoft.com/devcontainers/java:1-17-bookworm
# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
default-mysql-client \
maven \
&& rm -rf /var/lib/apt/lists/*
# 環境変数を設定
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH="${JAVA_HOME}/bin:${PATH}"
# 環境変数を永続化
RUN echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> /root/.bashrc && \
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /root/.bashrc
# デフォルトのコマンド(コンテナを継続的に動作させるため)
CMD [ "sleep", "infinity" ]
そして、今回使用するデータベースMySQLのログイン情報を記載しておくための.envファイルは下記のように設定しておきます。
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=mydatabase
MYSQL_USER=tkbo
MYSQL_PASSWORD=mypassword
DevcontainerのRebuildを行います。以下を参考にRebuild Containerを行ってください。
これでバックエンドの環境構築が終了しました!
次のステップ
MySQLのテーブルを作成します!