本記事では CData サポート担当からこんなことを聞かれたらどこを確認すべきか?という観点で、よく頂くお問合せ内容をご紹介します。
記事はこちら →Hibernate を使用することで、オブジェクト指向のドメインモデルを従来のリレーショナルデータベースにマッピングすることができます。以下のチュートリアルでは、CData JDBC Driver for ActOn を使用し、Hibernate でAct-On リポジトリのORM を生成する方法を説明します。
この記事を通してEclipse がIDE として選択されていますが、CData JDBC Driver for ActOn はJava Runtime Environment をサポートするすべての 製品で機能します。Knowledge Base には、IntelliJ IDEA やNetBeans からAct-On に接続するためのチュートリアルがあります。
以下のステップに従って、Eclipse にHibernate プラグインをインストールします。
以下のステップに従って、新しいプロジェクトにドライバーJARs を追加します。
以下のステップに従って、Act-On に接続プロパティを構成します。
以下の値をインプットします。
Connection URL:jdbc:acton: で始まり、セミコロンで区切られた接続プロパティのリストが続くJDBC URL
ActOn はOAuth 認証標準を利用しています。OAuth を使って認証するには、アプリケーションを作成してOAuthClientId、OAuthClientSecret、およびCallbackURL 接続プロパティを取得する必要があります。
認証方法についての詳細は、ヘルプドキュメントの「認証の使用」を参照してください。
JDBC URL の構成については、Act-On JDBC Driver に組み込まれている接続文字列デザイナを使用してください。JAR ファイルのダブルクリック、またはコマンドラインからJAR ファイルを実行します。
java -jar cdata.jdbc.acton.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
以下は一般的なJDBC URL です。
jdbc:acton:InitiateOAuth=GETANDREFRESH
以下のステップに従って、前の手順で作成した構成を選択します。
以下のステップに従って、reveng.xml 構成ファイルを生成します。アクセスするテーブルをオブジェクトとして指定します。
以下のステップに従って、plain old Java objects (POJO) をAct-On テーブルに生成します。
POJO は、前のステップのリバースエンジニアリング設定に基づいて作成されます。
生成したマッピングごとにhibernate.cfg.xml にマッピングタグを作成し、Hibernate がマッピングリソースを指定するようにする必要があります。hibernate.cfg.xml を開き、次のようにマッピングタグを挿入します。
cdata.acton.ActOnDriver
jdbc:acton:InitiateOAuth=GETANDREFRESH
org.hibernate.dialect.SQLServerDialect
前の手順で作成したエンティティを使用して、Act-On の検索と変更を行うことができます。
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 Images I WHERE FolderName = :FolderName";
Query q = session.createQuery(SELECT, Images.class);
q.setParameter("FolderName","New Folder");
List<Images> resultList = (List<Images>) q.list();
for(Images s: resultList){
System.out.println(s.getId());
System.out.println(s.getName());
}
}
}