Azure DB連携

Azure FunctionsからSQL Databaseにアクセスしてみた

データベースへアクセスする処理は、通常のSpring Boot上でのアプリケーション開発の場合と同様に、MyBatis等のDBアクセスフレームワークを利用すればよい。

今回は、MyBatisを利用して、Azure FunctionsからSQL Databaseにアクセスしてみたので、そのサンプルプログラムを共有する。

前提条件

下記記事に従ってAzure Functionsのサンプルプログラムを作成済であること。

Azure Functions上でSpring Bootを利用したJavaアプリケーションを作成してみた前回は、Azure Potal上でAzure Functionsを作成してみたが、今回は、前回作成したAzure FunctionsにS...

また、下記記事に従ってSQL DatabaseにUSER_DATAテーブルを作成済であること。

Azure Potal上でSQLデータベースを作成してみたAzure Portal上では、常に最新の安定したバージョンの SQL Serverデータベースである「SQL データベース」が利用でき...

さらに、下記記事に従ってSTSにLombokをインストール済であること。

STS(Spring Tool Suite)上でlombokを利用してみた今回は、STSを利用して、lombokを利用してみたので、その手順を共有する。STS上でlombokを利用できるようにするには、あらかじ...



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

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

<2021年4月13日 追記>
spring-cloud-function-dependenciesのバージョンは、2021年3月16日にリリースしたバージョン3.1.2を利用すると、1つのAzure Functions内に複数のファンクションを含む場合の不具合が解消できている。


その場合、Handlerクラスの継承するクラスを「AzureSpringBootRequestHandler」クラスから「FunctionInvoker」クラスに変更する。


spring-cloud-function-dependenciesの3.1.2を利用した実装サンプルは、以下の記事を参照のこと。

spring-cloud-function-dependenciesのバージョンを最新(3.1.2)にしてみたこれまでこのブログで取り上げてきたAzure Functionsのサンプルプログラムでは、spring-cloud-function-d...

pom.xmlに追加した内容は以下の通りで、SQL Server、MyBatis、Lombokの定義を追加している。なお、SQL Serverは、SQL Databaseにアクセスするために利用している。

application.propertiesに追加した内容は以下の通りで、SQL Databaseにアクセスするためのアクセス情報を定義している。

なお、SQL Databaseへ接続するJDBC接続文字列は、以下のように確認できる。
SQLデータベース_JDBC_1

SQLデータベース_JDBC_2



また、USER_DATAテーブルからデータを取得する処理は、以下のプログラムで実装している。

上記ソースコードによって、以下のSQL文が実行される。
user_dataテーブルのデータ



また、USER_DATAテーブルからデータを取得するMapperクラスを呼び出すサービスクラスの内容は、以下の通り。

さらに、上記サービスクラスは、以下のファンクションクラスから呼び出している。

また、上記ファンクションクラスの引数・戻り値である以下のクラスは、Lombokを利用するようにしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-functions-to-sql-database/demoAzureFunc



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

サンプルプログラムの実行結果は、以下の通り。

1) ローカル環境でdemoAzureFuncアプリを「mvn azure-functions:run」コマンドで起動する。
サンプルプログラムの実行結果_1

2) その後、「http://localhost:7071/api/hello?name=Azure」とアクセスした場合の実行結果は以下の通りで、メッセージにUSER_DATAテーブルの取得結果が表示される。
サンプルプログラムの実行結果_2

3) Azure Functionsにデプロイ後、「https://azurefuncdemoapp.azurewebsites.net/api/hello?name=Azure」とアクセスした場合の実行結果は以下の通りで、メッセージにUSER_DATAテーブルの取得結果が表示される。
サンプルプログラムの実行結果_3

なお、Azure Functionsにデプロイする過程は、以下の記事の「Azure FunctionsへのSpring Bootを利用したJavaアプリケーションのデプロイ」を参照のこと。

Azure Functions上でSpring Bootを利用したJavaアプリケーションを作成してみた前回は、Azure Potal上でAzure Functionsを作成してみたが、今回は、前回作成したAzure FunctionsにS...

要点まとめ

  • データベースへアクセスする処理は、通常のSpring Boot上でのアプリケーション開発の場合と同様に、MyBatis等のDBアクセスフレームワークを利用すればよい。
  • SQL Databaseへ接続するJDBC接続文字列を確認するには、Azure Portalの概要ページの「データベース接続文字列の表示」リンクを押下後、「JDBC」タブを押下する。