親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Spring BootでJPAを使用したデータベース設定


Spring BootでJPAの設定

Spring Bootでデータベースを利用するために、JPAの設定をしようと思います。
そもそもJPAとは「Java Persistence API(Javaの永続化のAPI)」の略であり、Javaの純正技術として浸透しているORMの仕様です。
なので、実際にはORMの技術で実装されたライブラリ(いわゆるプロバイダ)を使用します。
有名なライブラリとしてはHibernateなどがありますね。
Spring Bootでは、Hibernateの技術を駆使したライブラリとしてSpring Data JPAが用意されており、今回はこれを設定します。

Spring Data JPAのライブラリのインストール

まずはpom.xmlに以下を追加してSpring Data JPAのライブラリをインストールしましょう。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

また、JavaアプリケーションからMySQLに接続するために、
JDBCドライバのインストールもしましょう。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

scopeのruntimeは、実行時のみに必要な場合の指定で、JDBCドライバの場合はruntimeを使うことが普通です。
あまり深く考えず、上記のように設定してください。



アプリケーションの起動

上記の状態でアプリケーションを起動させてください。

そうすると、以下のようなエラーが発生します。

***************************
APPLICATION FAILED TO START
***************************
 
Description:
 
Cannot determine embedded database driver class for database type NONE
 
Action:
 
If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
 
 
Process finished with exit code 1

DB接続のライブラリはあるが、設定情報が書かれていないために、
どこに接続したら良いのかわからないと言っていますね。

DB接続の設定は、src/main/resources以下にapplication.ymlか、または、application.propertiesを作成します。

application.ymlに記載する場合は以下のようになります。

spring:
  datasource:
    url: jdbc:mysql://localhost/test_database?useSSL=false
    username: 環境ごとのユーザ名
    password: 環境ごとのパスワード
    driverClassName: com.mysql.jdbc.Driver

urlの末尾にある「?useSSL=false」はSSL接続をするか否かの設定ですが、
SSL接続をしない場合は基本的に指定は不要ですが、
実行時にWARNINGのメッセージが大量に出て不気味なのでfalseの指定をすることにしました。

これでアプリケーションを起動し、エラーなどが発生しなければひとまず設定はOKです。

ちなみにapplication.propertiesに設定する場合は、以下のように記載してください。

spring.datasource.url=jdbc:postgresql://localhost:3306/test_database
spring.datasource.username=環境ごとのユーザ名
spring.datasource.password=環境ごとのパスワード
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

まとめ

上記の手順でSpring Boot JPAの設定は完了しました。
あくまでローカル環境の開発用の設定になるので、本番環境なので使う場合には、application-production.ymlやapplication-production.propertiesを作成する必要があります。
それはまた別な機会で。。。


Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring Boot in Action

Spring Boot in Action

はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)

はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)