Java で SAP SuccessFactors のデータ エンティティのオブジェクト リレーショナル マッピング(ORM)を行う

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
オブジェクト リレーショナル マッピング(ORM)技術を使用すると、リレーショナルデータソースの操作が容易になり、論理的なビジネスモデルと物理ストレージモデルを橋渡しできます。本記事では、Java ベースの ORM フレームワーク Hibernate に SAP SuccessFactors のデータ への接続を組み込む方法を説明します。

Hibernate を使用して、オブジェクト指向のドメインモデルを従来のリレーショナルデータベースにマッピングできます。以下のチュートリアルでは、CData JDBC Driver for SAP SuccessFactors を使用して Hibernate で SAP SuccessFactors リポジトリの ORM を生成する方法を説明します。

本記事では IDE として Eclipse を使用していますが、CData JDBC Driver for SAP SuccessFactors は Java ランタイム環境をサポートするあらゆる製品で使用できます。Knowledge Base には、IntelliJ IDEA や NetBeans から SAP SuccessFactors のデータ に接続するためのチュートリアルも用意しています。

Hibernate のインストール

以下の手順に従って、Eclipse に Hibernate プラグインをインストールします。

  1. Eclipse で、Help -> Install New Software を選択します。
  2. Work With ボックスに「http://download.jboss.org/jbosstools/neon/stable/updates/」を入力します。
  3. フィルタボックスに「Hibernate」と入力します。
  4. Hibernate Tools を選択します。

新規プロジェクトの作成

以下の手順に従って、新しいプロジェクトにドライバー JAR を追加します。

  1. 新規プロジェクトを作成します。プロジェクトタイプとして Java Project を選択し、Next をクリックします。プロジェクト名を入力して Finish をクリックします。
  2. プロジェクトを右クリックして Properties をクリックします。Java Build Path をクリックし、Libraries タブを開きます。
  3. Add External JARs をクリックして、インストールディレクトリの lib サブフォルダにある cdata.jdbc.sapsuccessfactors.jar ライブラリを追加します。

Hibernate 設定ファイルの追加

以下の手順に従って、SAP SuccessFactors のデータ への接続プロパティを設定します。

  1. 新規プロジェクトを右クリックし、New -> Hibernate -> Hibernate Configuration File (cfg.xml) を選択します。
  2. src を親フォルダとして選択し、Next をクリックします。
  3. 以下の値を入力します:

    • Hibernate version:: 5.2
    • Database dialect: Derby
    • Driver class: cdata.jdbc.sapsuccessfactors.SAPSuccessFactorsDriver
    • Connection URL: JDBC URL です。jdbc:sapsuccessfactors: から始まり、セミコロン区切りの接続プロパティが続きます。

      SAP SuccessFactorsへの接続

      それでは、SAP SuccessFactors に接続していきましょう。CData 製品は、デフォルトで有効になっているOData API を介してSAP SuccessFactors と通信します。追加の権限が必要な場合は、SAP サポートサイトをご確認ください。

      認証方法として、Azure AD 認証、SAP IAS 認証、OAuth 認証(推奨)、Basic 認証(非推奨)のいずれかを使用してSAP SuccessFactors に認証できます。

      必要な接続プロパティ

      選択したAuthScheme に関わらず、SAP SuccessFactors 環境を識別するために以下の接続プロパティを設定しましょう。

      • URL:SuccessFactors をホストするサーバーのURL
      • CompanyId:SAP SuccessFactors テナントに割り当てられた一意の識別子。この値はAPI 認証に必要で、組織固有のものです

      OAuth 認証

      SAP SuccessFactors では、OAuth 認証を2種類のグラント種別でサポートしています。

      • SAP SuccessFactors LMS インスタンスのクライアントグラント種別
      • SAML-2 Bearer グラント種別

      OAuth 認証を有効にするには、すべてのOAuth フローでカスタムOAuth アプリケーションを作成し、適切なプロパティを設定する必要があります。

      デスクトップアプリケーションでカスタムOAuth アプリケーションの資格情報を使用して認証するには、OAuth アクセストークンを取得し、更新する必要があります。これらを設定すると、接続の準備が整います。

      OAuth アクセストークンの取得およびリフレッシュ

      以下のプロパティを設定してください。

      • InitiateOAuthGETANDREFRESHOAuthAccessToken を自動的に取得およびリフレッシュするために使用します
      • OAuthClientId:アプリケーションの登録時に割り当てられたクライアントId
      • CallbackURL:カスタムOAuth アプリケーションの登録時に定義されたリダイレクトURI
      • OAuthClientSecret (クライアントグラント種別のみ):アプリケーションの登録時に割り当てられたクライアントシークレット
      • PrivateKey (SAML-2 Bearer グラント種別のみ):カスタムOAuth アプリケーションの作成時にダウンロードした秘密鍵証明書のパス、またはその証明書のbase64 でエンコードされた内容

      接続すると、CData 製品がデフォルトブラウザでSAP SuccessFactors のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えてください。

      アプリケーションにアクセス許可を与えると、CData 製品がOAuth プロセスを完了します。

      1. CData 製品がSAP SuccessFactors からアクセストークンを取得し、それを使ってデータをリクエストします
      2. OAuth 値はOAuthSettingsLocation で指定されたパスに保存されます。これらの値は接続間で永続化されます

      アクセストークンの期限が切れた際は、CData 製品が自動でアクセストークンをリフレッシュします。

      カスタムOAuth アプリケーションの作成やその他の認証方法については、 href="/kb/help/" target="_blank">ヘルプドキュメントの「はじめに」をご確認ください。

      組み込みの接続文字列デザイナー

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

      java -jar cdata.jdbc.sapsuccessfactors.jar
      

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

      一般的な JDBC URL は以下のとおりです:

      jdbc:sapsuccessfactors:User=username;Password=password;CompanyId=CompanyId;Url=https://api4.successfactors.com;

Hibernate から SAP SuccessFactors のデータ に接続

以下の手順に従って、前のステップで作成した設定を選択します。

  1. Hibernate Configurations パースペクティブに切り替えます: Window -> Open Perspective -> Hibernate。
  2. Hibernate Configurations パネルを右クリックし、Add Configuration をクリックします。
  3. Hibernate version を 5.2 に設定します。
  4. Browse ボタンをクリックし、プロジェクトを選択します。
  5. Configuration file フィールドで、Setup -> Use Existing をクリックし、hibernate.cfg.xml ファイルの場所(このデモでは src フォルダ内)を選択します。
  6. Classpath タブで、User Entries の下に何もない場合は、Add External JARS をクリックしてドライバー jar を再度追加します。設定が完了したら OK をクリックします。
  7. 新しく作成した Hibernate 設定ファイルの Database ノードを展開します。

SAP SuccessFactors のデータ のリバースエンジニアリング

以下の手順に従って、reveng.xml 設定ファイルを生成します。オブジェクトとしてアクセスするテーブルを指定します。

  1. Package Explorer に戻ります。
  2. プロジェクトを右クリックし、New -> Hibernate -> Hibernate Reverse Engineering File (reveng.xml) を選択します。Next をクリックします。
  3. src を親フォルダとして選択し、Next をクリックします。
  4. Console configuration ドロップダウンメニューで、上記で作成した Hibernate 設定ファイルを選択し、Refresh をクリックします。
  5. ノードを展開し、リバースエンジニアリングするテーブルを選択します。完了したら Finish をクリックします。

Hibernate の実行設定

以下の手順に従って、SAP SuccessFactors テーブルの POJO(Plain Old Java Object)を生成します。

  1. メニューバーから、Run -> Hibernate Code Generation -> Hibernate Code Generation Configurations をクリックします。
  2. Console configuration ドロップダウンメニューで、前のセクションで作成した Hibernate 設定ファイルを選択します。Output directory の横にある Browse をクリックし、src を選択します。
  3. Reverse Engineer from JDBC Connection チェックボックスを有効にします。Setup ボタンをクリックし、Use Existing をクリックして、hibernate.reveng.xml ファイルの場所(このデモでは src フォルダ内)を選択します。
  4. Exporters タブで、Domain code (.java) と Hibernate XML Mappings (hbm.xml) をチェックします。
  5. Run をクリックします。

前のステップのリバースエンジニアリング設定に基づいて、1 つ以上の POJO が作成されます。

マッピングタグの挿入

生成した各マッピングに対して、hibernate.cfg.xml にマッピングタグを作成し、Hibernate がマッピングリソースを参照できるようにする必要があります。hibernate.cfg.xml を開き、以下のようにマッピングタグを挿入します:





  
    
      cdata.sapsuccessfactors.SAPSuccessFactorsDriver
    
    
      jdbc:sapsuccessfactors:User=username;Password=password;CompanyId=CompanyId;Url=https://api4.successfactors.com;
    
    
      org.hibernate.dialect.SQLServerDialect
    
    
    
    

SQL の実行

前のステップで作成したエンティティを使用して、SAP SuccessFactors のデータ のデータの検索と変更が可能になります:


import java.util.*;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;

public class App {
  public static void main(final String[] args) {
    Session session =  new
    Configuration().configure().buildSessionFactory().openSession();
    String SELECT = "FROM ExtAddressInfo E WHERE city = :city";
    Query q = session.createQuery(SELECT, ExtAddressInfo.class);
    q.setParameter("city","Springfield");
    List<ExtAddressInfo> resultList = (List<ExtAddressInfo>) q.list();

    for(ExtAddressInfo s: resultList){
      System.out.println(s.getaddress1());
      System.out.println(s.getzipCode());
    }
  }
}

はじめる準備はできましたか?

SAP SuccessFactors Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

SAP SuccessFactors Icon SAP SuccessFactors JDBC Driver お問い合わせ

SAP SuccessFactors に連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。