Spring Boot DB連携

Spring Boot上でマテリアライズドビューを利用してみた

今回は、Spring Boot上でマテリアライズドビューを利用するサンプルプログラムを作成してみたので、共有する。

マテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できるため、複雑な集計処理の高速化やデータ整合性の確保を簡単に実現しつつ、SELECT処理を効率的に行うことができる。

前提条件

下記記事の「マテリアライズドビューの作成」が完了していること。

マテリアライズドビューを作成してみたマテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できるため、複雑な集計処理の高速化やデータ整合...

また、下記記事の実装が完了していること。

Spring Bootで全角チェック処理を行う独自アノテーションを作成してみたSpring Bootの独自アノテーションで、特定のフィールドに対するチェック処理も実装することができる。今回は、特定のフィールドの全角...

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

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

UserDataMapperクラスの内容は以下の通りで、マテリアライズドビュー(mv_user_data)をリフレッシュするメソッド「refreshMvUserData」を追加している。



また、UserDataMapperのXMLファイルの内容は以下の通り。

idが「findBySearchForm」「findById」「findMaxId」であるSQL文は、「user_data」テーブルから参照していた部分を、マテリアライズドビュー「mv_user_data」から参照するように修正している。また、idが「refreshMvUserData」であるSQL文では、マテリアライズドビューのリフレッシュを行う処理を呼び出している。



さらに、サービスクラスの内容は以下の通りで、「deleteById」「createOrUpdate」の各メソッド内で、user_dataテーブルの更新後に、マテリアライズドビューのリフレッシュを行う処理を追加している。

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



サンプルプログラムの実行結果

画面上でのサンプルプログラム実行結果は以下の通り。

SQLログ出力内容をカスタマイズしてみた今回は、SQLログ出力内容をカスタマイズし、SQLの実行時間や呼出メソッドをSQLログに出力してみたので、そのサンプルプログラムを共有す...

また、データ追加を行った場合のログ出力内容は以下の通りで、追加後にマテリアライズドビューの更新処理が実施されている。
データ追加時のログ

要点まとめ

  • マテリアライズドビューのデータを取得するには、select文のfrom句で直接、マテリアライズドビューを指定すればよい。
  • マテリアライズドビューのリフレッシュするには、PL/SQLのdbms_mview.refresh句を利用すればよい。