各製品の資料を入手。
詳細はこちら →JDBI からZuora データ のデータアクセスオブジェクトを作成
JDBI でZuora のデータ 用のSQL オブジェクトAPIを作成する方法を概説します。
最終更新日:2022-05-25
この記事で実現できるZuora 連携のシナリオ
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
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 サービスを使用します。デフォルトでは、ZuoraService はAQuADataExport に設定されています。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
接続プロパティを入力し、接続文字列をクリップボードにコピーします。

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 を操作しましょう。