サービスビルダー
信頼できるビジネスロジックや永続性のないアプリケーションは、たいしたアプリケーションではありません。 残念ながら、独自の永続コードを作成するには、多くの場合、かなりの時間がかかります。 サービスビルダーは、単一のxmlファイルからモデルレイヤー、永続レイヤー、およびサービスレイヤーを生成できるオブジェクト関係マッピングツールです。 生成されたコードは完全にカスタマイズ可能です。必要に応じて、カスタムSQLとともに独自の永続コードを記述できます。 永続コードの作成方法に関係なく、サービスビルダーを使用してアプリのビジネスロジックを実装できます。
ここでは、サービスビルダーを使用して以下のことを行う方法について学びます。
-
永続フレームワークを生成してカスタマイズする
-
ビジネスロジックを実装する
service.xmlファイルでモデルとその関係を構成してサービスビルダーを実行すると、次のコードレイヤーが生成されます。
-
モデルレイヤー:プロジェクトのエンティティを表すオブジェクトを定義します。
-
永続レイヤー:データベースにエンティティを保存し、データベースからエンティティを取得します。
-
サービスレイヤー:APIとビジネスロジックを作成する準備ができている空白のレイヤー。
主な機能は次のとおりです。
-
カスタムビジネスロジックを実装するためのStubbed-outクラス
-
Hibernateの構成
-
構成可能なキャッシュのサポート
-
カスタムSQLクエリと動的クエリを追加するための柔軟性とサポート
DXP/Portal 上のバックエンド サービスには Service Builder を使用する必要はありません。 JPAやHibernateなど、選択した永続フレームワークを使用することは完全に可能です。 内部的には、Service Builder は Hibernateを使用していることに注意してください。
実装クラスによるカスタマイズ
サービスビルダーで生成されたエンティティには、次の実装クラスが含まれています。
-
エンティティの実装 (
*Impl.java): エンティティのカスタマイズを担当します。 -
ローカルサービスの実装 (
*LocalServiceImpl.java):永続レイヤーを呼び出してデータエンティティを取得および保存する役割を担います。 ローカルサービスはビジネスロジックを含み、永続レイヤーにアクセスします。 これらは、同じJava仮想マシンで実行されているクライアントコードによって呼び出すことができます。 -
リモートサービスの実装 (
*ServiceImpl.java):service.xmlがリモートサービス用に構成されている場合に生成されます。 リモートサービスには通常、権限チェックコードが含まれており、JVMの外部からアクセスできるようになっています。 Service Builder は、JSON または SOAP 経由でリモート サービスを利用できるようにするコードを自動的に生成します。また、 REST Builder または JAX-RSを使用して独自のリモート API を作成することもできます。
これらのクラスは、カスタムビジネスロジックを実装する場所です。 これらは、カスタマイズを目的としてサービスビルダーによって生成される唯一のクラスです。
Hibernateの構成
サービスビルダーは、オブジェクト関係マッピングにHibernate永続フレームワークを使用します。 サービスビルダーは、Hibernateの複雑さを隠しつつ、動的クエリやカスタムSQLなどのテクノロジーへのアクセスを提供します。 Hibernate環境を手動でセットアップしたり、構成を行ったりすることなく、プロジェクトでオブジェクト関係マッピング(ORM)を利用できます。
キャッシュ
Service Builder は、オブジェクトを 3 つのレベルでキャッシュします: エンティティ、 ファインダー、 Hibernate。 デフォルトでは、Liferayはこれらの各キャッシュレベルの基盤となるキャッシュプロバイダーとしてEhcacheを使用します。 ただし、これは ポータル プロパティを介して構成できます。 プロジェクトでエンティティとファインダーのキャッシュを有効にするには、service.xmlファイルでエンティティの<entity>要素のcache-enabled=true属性を設定するだけです。 Liferay クラスタリング では、クラスタ内の Liferay キャッシュについて説明します。
高度なクエリ
サービスビルダーは、データベース永続コードの作成に関連する一般的なタスクの多くを自動化しますが、カスタムSQLクエリの作成を妨げることはありません。 XMLファイルでカスタムSQLクエリを定義し、クエリを実行するためのファインダーメソッドを実装できます。 複雑な結合がある場合、Service Builder が邪魔になりません。 動的クエリを使用して Hibernate の基準 API またはドメイン固有言語クエリにアクセスし、直感的で信頼性の高い実装を実現することもできます。 詳細については、 高度なクエリ を参照してください。
次のステップ
サイトビルダーは、Liferay DXPとそのアプリケーション全体で排他的に使用されるため、十分にテストされており、堅牢です。 これにより、初期の開発時間と、プロジェクトの保守、拡張、カスタマイズに費やされる時間の両方を含め、開発時間が大幅に節約されます。 始めるには、 Service Builder の基礎から始めてください。