SpringBoot3✖️SpringDataJpaのデータベース接続

SpringBoot3(REST API)✖️Next.jsで作るSNSWebアプリケーション

今パートの目標

前回はReactアプリケーションをRenderにデプロイし、バックエンドとの通信を確認しました。
今回はデータベース接続の第一弾としてPostgresqlJDBCドライバーとSpringDataJpaをインストールし、SpringBootからデータベース操作ができる環境を整えていきたいと思います。

作業用ブランチを作成する

下記コマンドを実行し、作業用ブランチを作成します。

share-favplace-api % git checkout develop
share-favplace-api % git pull origin develop
share-favplace-api % git checkout -b develop_202040311_DBconnection 

依存関係を追加する

build.gradleにPostgresqlJDBCドライバーとSpringDataJpaの依存関係を追加していきます。

PostgresqlJDBCドライバー

JDBCドライバーをインストールすることによりJavaプログラムが標準のデータベースに依存しないJavaコードを使用してデータベースにアクセスすることができます。

つまり、PostgresqlならPostgresqlのJDBCドライバーMySqlならMySqlのJDBCドライバーをインストールすることによりデータベースに依存しないJavaコードが書けます。

SpringDataJpa

Javaクラスをデータベーステーブルにマッピングできるライブラリです。
SQLコードを記述することなくデータベースと直接対話することができます。

build.gradleを修正する

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'org.postgresql:postgresql'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

DB接続情報を設定する

データベースに接続するための情報をapplication.propertiesに設定していきます。

#################################
# postgres
#################################
spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.format-sql=true
spring.jpa.show-sql=true
#################################

簡単に説明します。

spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}

ここではデータベースに接続するためのURL、ユーザーネームとパスワードを設定しています。
${}となっているところは環境変数を参照しており、api-variables.envで設定した下記値が入ります。

# db
DB_USERNAME=postgresuser
DB_PASSWORD=postgrespassword
DB_HOST=share-favplace-db
DB_PORT=5432
DB_NAME=share-favplace-db

※補足としてはDocker環境のデータベースへ接続する場合、DBのホスト名はコンテナ名となることに注意してください。

SpringBootを起動する

下記コマンドでSpringBootアプリケーションを起動してみましょう。

share-favplace-api % docker-compose up -d

pgadmin4からDBサーバーに接続する

これからはDDL操作などは基本的にpgadmin4にアクセスし、Postgresの操作をしていきます。そのため、pgadmin4からDBサーバーへの接続を試しておきましょう。

下記にアクセスし、ログインします。

http://localhost:8888/login

メールアドレスとパスワードはpgadmin4-variables.envで設定したメールアドレスとパスワードでログインできます。

ログインできたらServersを右クリックし、サーバを登録します。

データベース名を入力し、接続タブの項目を入力していきます。

ホスト名はDocker環境のDBサーバーの場合コンテナ名となることに注意してください。

ユーザー名、パスワードはdb-variables.envで設定したDBのユーザー名とパスワードを指定します。

保存を押下してサーバーに接続します。
下記のようになれば完了です。

まとめ

以上でデータベース操作をするための準備は完了しました。

次回は実際にユーザーモデルを定義とユーザーテーブルを作成し、SpringBootからユーザーテーブルのレコードを取得するまでをやっていきたいと思います。

コメント

タイトルとURLをコピーしました