Java で Dynamics 365 Business Central のデータ エンティティのオブジェクト リレーショナル マッピング(ORM)を行う
Hibernate を使用して、オブジェクト指向のドメインモデルを従来のリレーショナルデータベースにマッピングできます。以下のチュートリアルでは、CData JDBC Driver for Dynamics 365 Business Central を使用して Hibernate で Dynamics 365 Business Central リポジトリの ORM を生成する方法を説明します。
本記事では IDE として Eclipse を使用していますが、CData JDBC Driver for Dynamics 365 Business Central は Java ランタイム環境をサポートするあらゆる製品で使用できます。Knowledge Base には、IntelliJ IDEA や NetBeans から Dynamics 365 Business Central のデータ に接続するためのチュートリアルも用意しています。
Hibernate のインストール
以下の手順に従って、Eclipse に Hibernate プラグインをインストールします。
- Eclipse で、Help -> Install New Software を選択します。
- Work With ボックスに「http://download.jboss.org/jbosstools/neon/stable/updates/」を入力します。
- フィルタボックスに「Hibernate」と入力します。
- Hibernate Tools を選択します。
新規プロジェクトの作成
以下の手順に従って、新しいプロジェクトにドライバー JAR を追加します。
- 新規プロジェクトを作成します。プロジェクトタイプとして Java Project を選択し、Next をクリックします。プロジェクト名を入力して Finish をクリックします。
- プロジェクトを右クリックして Properties をクリックします。Java Build Path をクリックし、Libraries タブを開きます。
- Add External JARs をクリックして、インストールディレクトリの lib サブフォルダにある cdata.jdbc.d365businesscentral.jar ライブラリを追加します。
Hibernate 設定ファイルの追加
以下の手順に従って、Dynamics 365 Business Central のデータ への接続プロパティを設定します。
- 新規プロジェクトを右クリックし、New -> Hibernate -> Hibernate Configuration File (cfg.xml) を選択します。
- src を親フォルダとして選択し、Next をクリックします。
以下の値を入力します:
- Hibernate version:: 5.2
- Database dialect: Derby
- Driver class: cdata.jdbc.d365businesscentral.D365BusinessCentralDriver
Connection URL: JDBC URL です。jdbc:d365businesscentral: から始まり、セミコロン区切りの接続プロパティが続きます。
Dynamics 365 Business Central 接続プロパティの取得・設定方法
Dynamics 365 Business Central への認証には、User およびAccessKey プロパティが必要です。
データに接続するには、OrganizationUrl を指定します。OrganizationUrl は、 http://businesscentral.dynamics.com/abc123/ などのBusiness Central アカウントへのエンドポインであるか、Web サービスのルートを参照する必要があります。OrganizationUrl を指定する方法 および利用可能なエンドポイントについての詳細は、Business Central エンドポイント を参照してください。組織内に複数の会社がある場合は、どの会社に接続するかを特定するためにCompany を指定する必要があります。 会社が1つだけの場合は、Company を指定する必要はありません。
Dynamics 365 Business Central に認証するには、User およびAccessKey 接続プロパティを指定します。Microsoft では、これらをテストおよび開発目的で推奨します。ただし、運用環境での使用は推奨していません。User およびAccessKey の値を取得するには、Dynamics 365 Business Central の「ユーザー」ページに移動して「編集」をクリックします。User Name および Web Service Access Key の値は、User およびPassword 接続文字列プロパティとして入力する値です。User Name はE メールアドレス ではありません。短縮されたユーザー名です。
Microsoft では、OAuth 認証を使用する本番ユースケースを推奨します。詳細については、ヘルプドキュメントの「OAuth 認証の使用」を参照してください。
組み込みの接続文字列デザイナー
JDBC URL の構築には、Dynamics 365 Business Central JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインから jar ファイルを実行してください。
java -jar cdata.jdbc.d365businesscentral.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
一般的な JDBC URL は以下のとおりです:
jdbc:d365businesscentral:OrganizationUrl=https://myaccount.financials.dynamics.com/;
Hibernate から Dynamics 365 Business Central のデータ に接続
以下の手順に従って、前のステップで作成した設定を選択します。
- Hibernate Configurations パースペクティブに切り替えます: Window -> Open Perspective -> Hibernate。
- Hibernate Configurations パネルを右クリックし、Add Configuration をクリックします。
- Hibernate version を 5.2 に設定します。
- Browse ボタンをクリックし、プロジェクトを選択します。
- Configuration file フィールドで、Setup -> Use Existing をクリックし、hibernate.cfg.xml ファイルの場所(このデモでは src フォルダ内)を選択します。
- Classpath タブで、User Entries の下に何もない場合は、Add External JARS をクリックしてドライバー jar を再度追加します。設定が完了したら OK をクリックします。
- 新しく作成した Hibernate 設定ファイルの Database ノードを展開します。
Dynamics 365 Business Central のデータ のリバースエンジニアリング
以下の手順に従って、reveng.xml 設定ファイルを生成します。オブジェクトとしてアクセスするテーブルを指定します。
- Package Explorer に戻ります。
- プロジェクトを右クリックし、New -> Hibernate -> Hibernate Reverse Engineering File (reveng.xml) を選択します。Next をクリックします。
- src を親フォルダとして選択し、Next をクリックします。
- Console configuration ドロップダウンメニューで、上記で作成した Hibernate 設定ファイルを選択し、Refresh をクリックします。
- ノードを展開し、リバースエンジニアリングするテーブルを選択します。完了したら Finish をクリックします。
Hibernate の実行設定
以下の手順に従って、Dynamics 365 Business Central テーブルの POJO(Plain Old Java Object)を生成します。
- メニューバーから、Run -> Hibernate Code Generation -> Hibernate Code Generation Configurations をクリックします。
- Console configuration ドロップダウンメニューで、前のセクションで作成した Hibernate 設定ファイルを選択します。Output directory の横にある Browse をクリックし、src を選択します。
- Reverse Engineer from JDBC Connection チェックボックスを有効にします。Setup ボタンをクリックし、Use Existing をクリックして、hibernate.reveng.xml ファイルの場所(このデモでは src フォルダ内)を選択します。
- Exporters タブで、Domain code (.java) と Hibernate XML Mappings (hbm.xml) をチェックします。
- Run をクリックします。
前のステップのリバースエンジニアリング設定に基づいて、1 つ以上の POJO が作成されます。
マッピングタグの挿入
生成した各マッピングに対して、hibernate.cfg.xml にマッピングタグを作成し、Hibernate がマッピングリソースを参照できるようにする必要があります。hibernate.cfg.xml を開き、以下のようにマッピングタグを挿入します:
cdata.d365businesscentral.D365BusinessCentralDriver
jdbc:d365businesscentral:OrganizationUrl=https://myaccount.financials.dynamics.com/;
org.hibernate.dialect.SQLServerDialect
SQL の実行
前のステップで作成したエンティティを使用して、Dynamics 365 Business Central のデータ のデータの検索と変更が可能になります:
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 Accounts A WHERE Name = :Name";
Query q = session.createQuery(SELECT, Accounts.class);
q.setParameter("Name","MyAccount");
List<Accounts> resultList = (List<Accounts>) q.list();
for(Accounts s: resultList){
System.out.println(s.getaccountid());
System.out.println(s.getName());
}
}
}