Spring Boot DB連携

Spring BootでOracle接続処理を実装してみた

Spring BootのWEBアプリケーションを開発する際、なんらかのデータベースにアクセスすることが多いが、SpringのJPAライブラリを利用すると、少ないコード量でDBアクセス処理の記述を行うことができる。

ただし、データベースアクセスが行えるようにするには、Oracle JDBCに接続するjarファイルの追加や、build.gradleの設定変更も必要になってくる。

今回は、最もよく使われているOracleデータベースからデータを取得し、その結果を表示するサンプルプログラムを作成してみたので、共有する。

前提条件

以下の記事のSpring BootのWEB画面用アプリが作成済であること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

また、以下の記事のlombokの設定が完了していること。

IntelliJ IDEAでlombokを使ってみたlombokというライブラリを使うと、JavaBeanクラスにおいて、アノテーション付与するだけで、getterメソッド・setterメ...

 

やってみたこと

  1. Oracle XEのインストール
  2. 接続用テーブルの作成とデータ追加
  3. Oracle JDBC接続用jarの配置
  4. build.gradleにOracle接続用定義を追加
  5. サンプルプログラムの作成と実行

 

Oracle XEのインストール

「Oracle XE」を利用すると、無料でOracleのデータベースを利用できるので、Oracle XEのインストールを行った。

Oracle XEのインストール手順は、以下を参照のこと。ただし、最新の18cをインストールしようとしたところ失敗してしまったので、今回は、以前のバージョンの「Oracle Database Express Edition 11g Release 2」をインストールした。

Windows端末にMySQL、PostgreSQL、Oracleをインストールしてみた今回はいろいろな種類のデータベースを使ってみたかったので、Windows端末に、MySQL、PostgreSQL、Oracleそれぞれの...

接続用テーブルの作成とデータ追加

今回作成するサンプルプログラムがアクセスするテーブル「user_data」を作成した。実行したSQLは以下の通り。

上記SQLを実行した結果は下図の通り。
user_dataテーブル



Oracle JDBC接続用jarの配置

Oracle JDBCに接続するjarファイルは、Oracle XEをインストール後の以下の場所に配置されている。
oracle_jdbc接続用jar

上記のうちの「ojdbc6.jar」を、サンプルプログラムのdemoプロジェクト下、libフォルダ下に配置する。今回作成したサンプルプログラムの構成は以下の通りで、「ojdbc6.jar」は下図上方のlibフォルダ内を参照のこと。
サンプルプログラムの構成



build.gradleにOracle接続用定義を追加

今回のサンプルプログラムでは、Oracle接続用jarとJPAライブラリが必要になるので、build.gradleに「spring-boot-starter-data-jpa」と「ojdbc6.jar」の定義を追加する。
追加後の「build.gradle」は以下の通りで、下2行がOracle接続用jarとJPAライブラリの定義となる。

その他、今回もlombokが必要になるので、その定義も追加している。lombokについては以下のサイトを参照のこと。

IntelliJ IDEAでlombokを使ってみたlombokというライブラリを使うと、JavaBeanクラスにおいて、アノテーション付与するだけで、getterメソッド・setterメ...



サンプルプログラムの作成と実行

作成したサンプルプログラムの構成は、「Oracle JDBC接続用jarの配置」に記載した通りとなる。

まず、Oracleに接続するための接続情報を、application.propertiesに追加した。追加したプロパティファイルの内容は以下の通り。

次に、Oracleに接続する際にJPAを利用するため、テーブル「user_data」アクセス用エンティティクラスと、JPAアクセス用リポジトリを作成した。そのプログラムの内容は以下の通り。

エンティティクラスでは、クラスに「@Entity」アノテーションを付与することと、主キー項目に「@Id」アノテーションを付与することが必須である。また、リポジトリは、JpaRepositoryインタフェースを継承する必要がある。

また、JPAアクセス用リポジトリの呼出は、コントローラクラスで行っている。そのプログラムの内容は以下の通り。ここでは、初期表示時にユーザーデータテーブルの全データを取得し、userDataListに格納できるよう、UserDataRepositoryクラスのfindAllメソッドを呼び出している。

また、ユーザーデータテーブルから取得した結果を表示するHTMLファイルの内容は、以下の通り。ここでは、userDataListの値を一覧で表示するために、th:eachタグを利用している。また、それぞれのデータを表示するために、th:textタグを利用している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-oracle/demo

作成したサンプルプログラムを実行した結果は以下の通りで、Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、ユーザーデータテーブル(user_data)のデータが画面上に表示されることが確認できる。
サンプルプログラムの実行結果

要点まとめ

  • Spring BootのアプリケーションでOracle接続を行うためには、build.gradleに、「spring-boot-starter-data-jpa」と「ojdbcXX.jar」の定義を追加する。
  • Oracle接続用の定義は、「application.properties」に追加する。
  • Oracleに接続する際にJPAを利用できるようにするには、テーブルにアクセスするエンティティクラスと、JPAアクセス用リポジトリを追加する。
  • JPAで全データを取得するには、JPAアクセス用リポジトリのfindAllメソッドを利用する。
  • HTML上でリストのデータを一覧表示するには、th:eachタグでリストの各データを取得し、取得したデータの各変数はth:textタグで表示する。