13.3. Thorntail のリレーショナルデータベースバックエンドの例

重要

以下の例は、実稼働環境での実行を目的としていません。

制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。

上達度レベルの例: Foundational

リレーショナルデータベースバックエンドのサンプル

Relational Database Backend のサンプルは、REST API Level 0 アプリケーションを拡張し、単純な HTTP API を使用して PostgreSQL データベースで 作成読み取り更新、および 削除 (CRUD) 操作を実行する基本的な例を提供します。CRUD 操作は永続ストレージの 4 つの基本的な機能であり、データベースを処理する HTTP API の開発時に広く使用されます。

また、この例では、HTTP アプリケーションが OpenShift のデータベースを見つけ、接続する機能も示しています。各ランタイムは、指定したケースで最も適した接続ソリューションを実装する方法を示しています。ランタイムは、JDBCJPAの使用、または ORM API に直接アクセスするなどのオプションを選択できます。

サンプルアプリケーションは HTTP API を公開し、HTTP で CRUD 操作を実行してデータを操作できるようにするエンドポイントを提供します。CRUD 操作は HTTP Verbs にマップされます。API は JSON フォーマットを使用して要求を受け取り、ユーザーに応答を返します。また、ユーザーは、サンプルが提供するユーザーインターフェースを使用して、アプリケーションを使用することもできます。具体的には、この例では以下を可能にするアプリケーションを提供します。

  • ブラウザーでアプリケーション Web インターフェースに移動します。これにより、my_data データベースのデータで CRUD 操作を実行する簡単な Web サイトが公開されます。
  • api/fruits エンドポイントで HTTP GET 要求を実行します。
  • データベース内のすべての fruits の一覧が含まれる JSON 配列としてフォーマットされたレスポンスを受け取ります。
  • 有効なアイテム ID を引数として渡しながら、api/fruits/* エンドポイントで HTTP GET 要求を実行します。
  • 指定の ID を持つ fruit の名前が含まれる JSON 形式で応答を受け取ります。指定された ID に項目がない場合は、呼び出しにより HTTP エラー 404 が発生します。
  • api/fruits エンドポイントで HTTP POST 要求を実行し、有効な name 値を渡してデータベースの新規エントリーを作成します。
  • 有効な ID および名前を引数として渡す api/fruits/* エンドポイントで HTTP PUT 要求を実行します。これにより、要求に指定された名前に一致するように、指定の ID を持つ項目の名前が更新されます。
  • api/fruits/* エンドポイントで HTTP DELETE 要求を実行し、有効な ID を引数として渡します。これにより、指定された ID の項目がデータベースから削除され、応答として HTTP コード 204 (コンテンツなし) を返します。無効な ID を渡すと、呼び出しにより HTTP エラー 404 が発生します。

この例には、アプリケーションがデータベースと完全に統合されていることを検証するために使用できる自動化された 統合テスト のセットも含まれています。

この例では、完全に成熟した RESTful モデル (レベル 3) を示していますが、推奨される HTTP API プラクティスに従って、互換性のある HTTP 動詞およびステータスを使用しています。

13.3.1. Relational Database Backend の設計トレードオフ

表13.3 設計のトレードオフ

利点不利な点
  • 各ランタイムは、データベースの対話の実装方法を決定します。もう 1 つは JDBC などの低レベルの接続 API を使用すると、JPA を使用できますが、もう 1 つは ORM API に直接アクセスできます。各ランタイムは、最適な方法を決定します。
  • 各ランタイムはスキーマの作成方法を決定します。
  • このサンプルアプリケーションで提供される PostgreSQL データベースは永続ストレージではバックアップされていません。データベース Pod を停止または再デプロイすると、データベースへの変更は失われます。変更を保持するために、サンプルアプリケーションの Pod で外部データベースを使用するには、OpenShift ドキュメントの「Creating an application with a database」を参照してください。OpenShift 上のデータベースコンテナーで永続ストレージを設定することもできます。OpenShift およびコンテナーで永続ストレージを使用する方法は、OpenShift ドキュメントの「Persistent Storage」「Managing Volumes」および「Persistent Volumes」の章を参照してください。