こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Hibernate を使用することで、オブジェクト指向のドメインモデルを従来のリレーショナルデータベースにマッピングすることができます。以下のチュートリアルでは、CData JDBC Driver for HubDB を使用し、Hibernate でHubDB リポジトリのORM を生成する方法を説明します。
この記事を通してEclipse がIDE として選択されていますが、CData JDBC Driver for HubDB はJava Runtime Environment をサポートするすべての
製品で機能します。Knowledge Base には、IntelliJ IDEA やNetBeans からHubDB に接続するためのチュートリアルがあります。
Hibernate をインストール
以下のステップに従って、Eclipse にHibernate プラグインをインストールします。
- Eclipse で、[Help]->[Install New Software]と進みます。
- Work With ボックスに[http://download.jboss.org/jbosstools/neon/stable/updates/] と入力します。
- フィルタボックスに、[Hibernate]と入力します。
- [Hibernate Tools]を選択します。
新しいプロジェクトを開始
以下のステップに従って、新しいプロジェクトにドライバーJARs を追加します。
- 新しいプロジェクトを作成します。プロジェクトタイプとして[Java Project]を選択し、[Next]をクリックします。プロジェクト名を入力し、[Finish]をクリックします。
- [project]を右クリックし、[Properties]を選択します。[Java Build Path]をクリックし、[Libraries]タブを開きます。
- [Add External JARs]をクリックし、インストールディレクトリのlib サブフォルダにあるcdata.jdbc.hubdb.jar ライブラリを追加します。
Hibernate 構成ファイルを追加
以下のステップに従って、HubDB に接続プロパティを構成します。
- [new project]で右クリックし、[New]->[Hibernate]->[Hibernate Configuration File (cfg.xml)]と進みます。
- 親フォルダとして[src]を選択し、[Next]をクリックします。
以下の値をインプットします。
- Hibernate version:5.2
- Database dialect:Derby
- Driver class: cdata.jdbc.hubdb.HubDBDriver
Connection URL:jdbc:hubdb: で始まり、セミコロンで区切られた接続プロパティのリストが続くJDBC URL
HubDBデータソースへの接続には、パブリックHubSpotアプリケーションを使用したOAuth認証とプライベートアプリケーショントークンを使用した認証の2つの方法があります。
カスタムOAuthアプリを使用する
すべてのOAuthフローでAuthSchemeを"OAuth"に設定する必要があります。特定の認証ニーズ(デスクトップアプリケーション、Webアプリケーション、ヘッドレスマシン)に必要な接続プロパティについては、ヘルプドキュメントを確認してください。
アプリケーションを登録し、OAuthクライアント認証情報を取得するには、以下の手順を実行してください。
- HubSpotアプリ開発者アカウントにログインします。
- アプリ開発者アカウントである必要があります。標準のHubSpotアカウントではパブリックアプリを作成できません。
- 開発者アカウントのホームページで、アプリタブをクリックします。
- アプリを作成をクリックします。
- アプリ情報タブで、ユーザーが接続する際に表示される値を入力し、必要に応じて変更します。これらの値には、パブリックアプリケーション名、アプリケーションロゴ、アプリケーションの説明が含まれます。
- 認証タブで、「リダイレクトURL」ボックスにコールバックURLを入力します。
- デスクトップアプリケーションを作成する場合は、http://localhost:33333のようなローカルにアクセス可能なURLに設定します。
- Webアプリケーションを作成する場合は、ユーザーがアプリケーションを承認した際にリダイレクトされる信頼できるURLに設定します。
- アプリを作成をクリックします。HubSpotがアプリケーションとそれに関連する認証情報を生成します。
- 認証タブで、クライアントIDとクライアントシークレットを確認します。これらは後でドライバーを設定する際に使用します。
スコープの下で、アプリケーションの意図する機能に必要なスコープを選択します。
テーブルにアクセスするには、最低限以下のスコープが必要です:
- hubdb
- oauth
- crm.objects.owners.read
- 変更を保存をクリックします。
- 統合に必要な機能にアクセスできる本番ポータルにアプリケーションをインストールします。
- 「インストールURL(OAuth)」の下で、完全なURLをコピーをクリックして、アプリケーションのインストールURLをコピーします。
- コピーしたリンクをブラウザで開きます。アプリケーションをインストールする標準アカウントを選択します。
- アプリを接続をクリックします。結果のタブは閉じて構いません。
プライベートアプリを使用する
HubSpotプライベートアプリケーショントークンを使用して接続するには、AuthSchemeプロパティを"PrivateApp"に設定します。
以下の手順に従ってプライベートアプリケーショントークンを生成できます:
- HubDBアカウントで、メインナビゲーションバーの設定アイコン(歯車)をクリックします。
- 左サイドバーメニューで、統合 > プライベートアプリに移動します。
- プライベートアプリを作成をクリックします。
- 基本情報タブで、アプリケーションの詳細(名前、ロゴ、説明)を設定します。
- スコープタブで、プライベートアプリケーションがアクセスできるようにしたい各スコープに対して読み取りまたは書き込みを選択します。
- テーブルにアクセスするには、最低限hubdbとcrm.objects.owners.readが必要です。
- アプリケーションの設定が完了したら、右上のアプリを作成をクリックします。
- アプリケーションのアクセストークンに関する情報を確認し、作成を続行をクリックし、その後トークンを表示をクリックします。
- コピーをクリックして、プライベートアプリケーショントークンをコピーします。
接続するには、PrivateAppTokenを取得したプライベートアプリケーショントークンに設定します。
ビルトイン接続文字列デザイナ
JDBC URL の構成については、HubDB JDBC Driver に組み込まれている接続文字列デザイナを使用してください。JAR ファイルのダブルクリック、またはコマンドラインからJAR ファイルを実行します。
java -jar cdata.jdbc.hubdb.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
以下は一般的なJDBC URL です。
jdbc:hubdb:AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;InitiateOAuth=GETANDREFRESH
Hibernate のHubDB データへの接続
以下のステップに従って、前の手順で作成した構成を選択します。
- [Window]->[Open Perspective]->[Hibernate]と進み、Hibernate Configurations パースペクティブに切り替えます。
- [Hibernate Configurations]パネルで右クリックし、[Add Configuration]を選択します。
- Hibernate version を5.2に設定します。
- [Browse]ボタンをクリックし、[project]を選択します。
- [Configuration file]フィールドで、[Setup]->[Use Existing]とクリックし、(このデモのsrc フォルダー内にある)hibernate.cfg.xml ファイルを選択します。
- [Classpath tab]で、[User Entries]の下に何もなかった場合、[Add External JARS]をクリックしてドライバーjar をもう一度追加します。構成が完了したら、[OK]をクリックします。
- 新しく作成されたHibernate 構成ファイルのDatabase node を展開します。
HubDB データをリバースエンジニアリング
以下のステップに従って、reveng.xml 構成ファイルを生成します。アクセスするテーブルをオブジェクトとして指定します。
- Package Explorer に戻ります。
- プロジェクトを右クリックし、[New]->[Hibernate]->[Hibernate Reverse Engineering File (reveng.xml)]と進みます。[Next]をクリックします。
- 親フォルダとして[src]を選択し、[Next]をクリックします。
- [Console configuration drop-down]メニューで、上で作成した[Hibernate configuration]ファイルを選択し、[Refresh]をクリックします。
- ノードを展開し、リバースエンジニアリングするテーブルを選択します。完了したら、[Finish]をクリックします。
実行するためのHibernate を構成
以下のステップに従って、plain old Java objects (POJO) をHubDB テーブルに生成します。
- メニューバーから、[Run]->[Hibernate Code Generation]->[Hibernate Code Generation Configurations]と進みます。
- [Console configuration drop-down]メニューで、前のセクションで作成した[Hibernate configuration]ファイルを選択します。Output ディレクトリで[Browse]をクリックし、src を選択します。
- [JDBC Connection]チェックボックスから[Reverse Engineer]を有効にします。[Setup]ボタンをクリックし、[Use Existing]をクリックして(このデモのsrcフォルダ内にある) hibernate.reveng.xml ファイルの場所を選択します。
- [Exporters]タブで[Domain code (.java)]と[Hibernate XML Mappings (hbm.xml)]をチェックします。
- [Run]をクリックします。
POJO は、前のステップのリバースエンジニアリング設定に基づいて作成されます。
マッピングタグを挿入
生成したマッピングごとにhibernate.cfg.xml にマッピングタグを作成し、Hibernate がマッピングリソースを指定するようにする必要があります。hibernate.cfg.xml を開き、次のようにマッピングタグを挿入します。
cdata.hubdb.HubDBDriver
jdbc:hubdb:AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;InitiateOAuth=GETANDREFRESH
org.hibernate.dialect.SQLServerDialect
SQLを実行
前の手順で作成したエンティティを使用して、HubDB の検索と変更を行うことができます。
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 NorthwindProducts N WHERE Id = :Id";
Query q = session.createQuery(SELECT, NorthwindProducts.class);
q.setParameter("Id","1");
List<NorthwindProducts> resultList = (List<NorthwindProducts>) q.list();
for(NorthwindProducts s: resultList){
System.out.println(s.getPartitionKey());
System.out.println(s.getName());
}
}
}