Spring Boot DB連携

Spring Boot上でMongoDBをMongoRepositoryで操作してみた

以前、Oracleと連携するSpring BootのWEBアプリケーションを作成していたが、同じ機能をMongoDBと連携するように変更してみたので、そのサンプルプログラムを共有する。

なお、今回はMongoDB上のデータ参照/作成/更新/削除を簡単に行うことができる「MongoRepository」を利用している。

前提条件

MongoDBのインストールが完了し、下記サイト内のデータベース「test」の下にコレクション「user_data」が作成されていること

MongoDBをMongo Shellで操作してみた今回は、コマンドラインでMongoDBを操作できる「Mongo Shell」を使用して、MongoDBへのDB追加、コレクション追加、デ...

完成した画面イメージ

下記記事の「完成した画面イメージの共有」を参照のこと。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(完成イメージ編)今回は、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理をSpring Boo...

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、今回説明するプログラムを示している。

build.gradleの内容は以下の通りで、MongoDBを利用するための「spring-boot-starter-data-mongodb」を追加している。

また、application.ymlの内容は以下の通りで、MongoDBの接続先となるホスト名・ポート番号・データベース名を指定している。

さらに、コレクション「user_data」のエンティティクラスの内容は以下の通りで、コレクション名を@Documentアノテーションで指定し、主キーを@Idアノテーションで指定している。

また、MongoRepositoryを継承したインタフェースの内容は以下の通りで、これを利用してMongoDBへのアクセスを行えるようにしている。また、IDが最大のユーザーデータを取得するためのメソッドを追加している。

さらに、MongoDBへのアクセスを行うサービスクラスのインタフェースの内容は以下の通り。

次に、サービスクラスのインタフェースの実装内容は以下の通り。UserDataRepositoryクラスを用いてMongoDBにアクセスしていて、全データ取得はfindAllメソッド、特定データの取得はfindByIdメソッド、データ作成/更新はsaveメソッド、データ削除はdeleteメソッドを、それぞれ利用している。

また、フォームクラス、コントローラクラスの内容は以下の通り。コントローラクラスは、先ほどのサービスクラスを呼び出している。

また、HTMLファイルの中で今回変更した「list.html」の内容は以下の通りで、updateメソッド・delete_confirmメソッドを呼び出す際の引数にpKeyId(MongoDBの主キー)を渡すようにしている。

さらに、DemoApplicationクラスの内容は以下の通り。

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

要点まとめ

  • Spring Boot上でMongoDBを操作するには、MongoRepositoryを利用すると、MongoDB上のデータ参照/作成/更新/削除を簡単に行うことができる。