製品をチェック

Zuora Driver の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

Zuora アイコン Zuora JDBC Driver 相談したい

Zuora データを組み込んだパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。

JDBI からZuora データ のデータアクセスオブジェクトを作成

JDBI でZuora データ 用のSQL オブジェクトAPIを作成する方法を概説します。

加藤龍彦
デジタルマーケティング

最終更新日:2022-05-25
zuora ロゴ

CData

jdbc ロゴ画像
JDBI ロゴ

こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。

JDBI は、Fluent スタイルとSQL オブジェクトスタイルという2つの異なるスタイルAPI を公開する、Java 用のSQL コンビニエンスライブラリです。CData JDBC Driver for Zuora は、Java アプリケーションとリアルタイムZuora データ のデータ連携を実現します。これらの技術を組み合わせることによって、Zuora データ へのシンプルなコードアクセスが可能になります。ここでは、基本的なDAO(Data Access Object )とそれに付随するZuora データ の読み書きのためのコードの作成について説明します。

Zuora Invoices Entity のDAO を作成

以下のインターフェースは、実装されるSQL ステートメントごとに単一のメソッドを作成するためのSQL オブジェクトの正しい動作を宣言します。

public interface MyInvoicesDAO { //insert new data into Zuora @SqlUpdate("INSERT INTO Invoices (BillingState, BillingCity) values (:billingState, :billingCity)") void insert(@Bind("billingState") String billingState, @Bind("billingCity") String billingCity); //request specific data from Zuora (String type is used for simplicity) @SqlQuery("SELECT BillingCity FROM Invoices WHERE BillingState = :billingState") String findBillingCityByBillingState(@Bind("billingState") String billingState); /* * close with no args is used to close the connection */ void close(); }

Zuora への接続を開く

必要な接続プロパティを収集し、Zuora に接続するための適切なJDBC URL を作成します。

Zuora はユーザー認証にOAuth 標準を使用しています。OAuth 認証ついて詳しくは、オンラインヘルプドキュメントを参照してください。

Tenant プロパティの設定

プロバイダへの有効な接続を作成するには、アカウントの設定と合致するテナント値を1つ選択する必要があります。以下は、利用可能なオプションのリストです。

  • USProduction:リクエストはhttps://rest.zuora.com に送信されます。
  • USAPISandbox:リクエストはhttps://rest.apisandbox.zuora.com に送信されます。
  • USPerformanceTest:リクエストはhttps://rest.pt1.zuora.com に送信されます。
  • EUProduction:リクエストはhttps://rest.eu.zuora.com に送信されます。
  • EUSandbox:リクエストはhttps://rest.sandbox.eu.zuora.com に送信されます。

デフォルトではUSProduction テナントを使用します。

Zuora サービスの選択

データクエリとAQuA API の2つのZuora サービスを使用します。デフォルトでは、ZuoraServiceAQuADataExport に設定されています。

DataQuery

データクエリ機能は、非同期の読み取り専用SQL クエリを実行することで、Zuora テナントからのデータのエクスポートを実現します。 このサービスは、素早く軽量なSQL クエリでの使用を推奨します。

制限

  • フィルタ適用後の、テーブルごとの入力レコードの最大数: 1,000,000
  • 出力レコードの最大数: 100,000
  • テナントごとの、実行用に送信される同時クエリの最大数: 5
  • テナントごとの、同時クエリの制限に達した後に実行用に送信され、キューに追加されるクエリの最大数: 10
  • 1時間単位での、各クエリの最大処理時間: 1
  • GB 単位での、各クエリに割り当てられるメモリの最大サイズ: 2
  • Index Join を使用する際のインデックスの最大値。言い換えれば、Index Join を使用する際にWHERE 句で使われる一意の値に基づいた、左のテーブルから返されるレコードの最大数: 20.000

AQuADataExport

AQuA API のエクスポートは、すべてのオブジェクト(テーブル)のすべてのレコードをエクスポートするように設計されています。AQuA のクエリジョブには以下の制限があります。

制限

  • AQuA のジョブ内のクエリが8時間以上実行されている場合、ジョブは自動的に停止されます。
  • 停止されたAQuA のジョブは3回再試行可能で、その後失敗として返されます。

ビルトイン接続文字列デザイナー

JDBC URL の構成については、Zuora JDBC Driver に組み込まれている接続文字列デザイナーを使用してください。JAR ファイルのダブルクリック、またはコマンドラインからJAR ファイルを実行します。

java -jar cdata.jdbc.zuora.jar

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

Zuora の接続文字列は、通常次のようになります。

jdbc:zuora:OAuthClientID=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;Tenant=USProduction;ZuoraService=DataQuery;InitiateOAuth=GETANDREFRESH

構成済みのJDBC URL を使用して、DAO インターフェースのインスタンスを取得します。以下に示す特定のメソッドはインスタンスにバインドされたハンドルを開くため、ハンドルとバインドされたJDBC 接続を開放するには、インスタンスを明示的に閉じる必要があります。

DBI dbi = new DBI("jdbc:zuora:OAuthClientID=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;Tenant=USProduction;ZuoraService=DataQuery;InitiateOAuth=GETANDREFRESH"); MyInvoicesDAO dao = dbi.open(MyInvoicesDAO.class); //do stuff with the DAO dao.close();

Zuora データ について

Zuora への接続を開いた状態で以前定義したメソッドを呼び出すだけで、Zuora のInvoices エンティティからデータを取得できます。

//disply the result of our 'find' method String billingCity = dao.findBillingCityByBillingState("CA"); System.out.println(billingCity);

Zuora データ の書き方

以前定義した方法を使用すれば、Zuora にデータを書き込むことも簡単になります。

//add a new entry to the Invoices entity dao.insert(newBillingState, newBillingCity);

JDBI ライブラリはJDBC 接続を処理できるため、CData JDBC Driver for Zuora と統合することで、SQL Object API for Zuora を簡単に作成できます。今すぐ無料トライアルをダウンロードし、Java アプリケーションでリアルタイムZuora を操作しましょう。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。