今パートの目標
前回は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サーバーへの接続を試しておきましょう。
下記にアクセスし、ログインします。
メールアドレスとパスワードはpgadmin4-variables.envで設定したメールアドレスとパスワードでログインできます。
ログインできたらServersを右クリックし、サーバを登録します。
データベース名を入力し、接続タブの項目を入力していきます。
ホスト名はDocker環境のDBサーバーの場合コンテナ名となることに注意してください。
ユーザー名、パスワードはdb-variables.envで設定したDBのユーザー名とパスワードを指定します。
保存を押下してサーバーに接続します。
下記のようになれば完了です。
まとめ
以上でデータベース操作をするための準備は完了しました。
次回は実際にユーザーモデルを定義とユーザーテーブルを作成し、SpringBootからユーザーテーブルのレコードを取得するまでをやっていきたいと思います。
コメント