Service Builderによって生成されたコードを理解する

Service Builderによって生成されたコードを理解する

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

Service Builderは、エンティティをサポートするためにコード を生成します。 以下の[ローカルサービス]および[リモートサービス]にリストされているファイルは、 ローカルサービス および リモートサービス 属性が true設定されているエンティティに対してのみ生成されます。 Service Builderは、 service.xml指定したパッケージ内のアプリケーションの * -api および * -service モジュールでこれらのエンティティのサービスを生成します。 たとえば、Liferayのブックマークアプリケーションのパッケージパスは次のとおりです。

  • /bookmarks-api/src/main/java/com/liferay/bookmarks
  • /bookmarks-service/src/main/java/com/liferay/bookmarks

bookmarks-api モジュールのインターフェイスは、ブックマークアプリケーションAPIを定義します。 * -api モジュールインターフェイスは、アプリケーションの永続層、サービス層、およびモデル層を定義します。 * -api モジュールをコンパイルしてデプロイすると、そのすべてのクラスとインターフェースが、モジュールの build / libs フォルダー内の PROJECT_NAME-api.jar という .jar ファイルにパッケージ化されます。 このJARをLiferay デプロイすると、 APIがOSGiサービスとして定義されます。

bookmarks-service モジュールクラスは、 bookmarks-api モジュールインターフェイスを実装します。 * -service モジュールは、LiferayのOSGiフレームワークにデプロイするOSGiサービスの実装を提供します。

次に、指定したエンティティに対して生成されたクラスとインターフェイスを調べます。 service.xmlで各エンティティがどのように指定されているかに応じて、同様のクラスが各エンティティに対して生成されます。 3種類のカスタマイズ可能なクラスを次に示します。

  • *LocalServiceImpl
  • *ServiceImpl
  • *Impl

* は、上記のクラスのエンティティ名を表します。

永続性、サービス、およびモデルのクラスは次のとおりです。

  • 持続性

    • [ENTITY_NAME]永続:のようなエンティティのCRUDメソッド定義永続インタフェース 作成削除countAll検索のfindAll等、
    • [ENTITY_NAME]PersistenceImpl[ENTITY_NAME]Persistenceを実装する永続化実装クラス。
    • [ENTITY_NAME]Util[ENTITY_NAME]PersistenceImpl をラップし、CRUD操作のためにデータベースへの直接アクセスを提供する永続性ユーティリティクラス。 このユーティリティは、サービス層でのみ使用する必要があります。ポートレットクラスで、 @Reference アノテーション参照することにより、 [ENTITY_NAME] クラスを使用します。

    図1:Service Builderは、* Event *と呼ばれるエンティティの例に対して、これらの永続クラスとインターフェイスを生成します。 これらのクラスやインターフェースをカスタマイズするべきではありません(また、その必要はありません)。

  • ローカルサービス(エンティティの local-service 属性が service.xml``true に設定されている場合にのみ、エンティティに対して生成されます)

    • [ENTITY_NAME]LocalService:ローカルサービスインターフェイス。
    • [ENTITY_NAME]LocalServiceImplLOCAL SERVICE IMPLEMENTATION):ローカルサービスの実装。 これは、手動で変更する必要があるローカルサービスの唯一のクラスです。 ここでカスタムビジネスロジックを追加できます。 ここで追加されたメソッドの場合、Service Builderは、次に実行するときに、対応するメソッドを [ENTITY_NAME]LocalService インターフェイスに追加します。
    • [ENTITY_NAME]LocalServiceBaseImpl:ローカルサービスベースの実装。 これは抽象クラスです。 Service Builderは、さまざまなサービスおよび永続性クラスの多数のインスタンスをこのクラスに注入します。 @抽象
    • [ENTITY_NAME]LocalServiceUtil:ラップするローカルサービスユーティリティクラス [ENTITY_NAME]LocalServiceImpl。 このクラスは、後方互換性のためにのみ生成されます。 @Reference アノテーション参照することにより、 * LocalService クラスを使用し` 。
  • [ENTITY_NAME]LocalServiceWrapper`: `[ENTITY_NAME]LocalService`を実装するローカルサービスラッパー。 このクラスは、拡張できるように設計し、それはあなたのことができますされ [カスタマイズエンティティのローカルサービスを](/docs/7-1/tutorials/-/knowledge_base/t/customizing-liferay-services-service-wrappers)。
    ![図2:Service Builderはこれらのサービスクラスとインターフェイスを生成します。 \ [ENTITY \ _NAME \] LocalServiceImpl(たとえば、イベントエンティティのEventLocalServiceImpl)のみが、サービスレイヤーにカスタムメソッドを追加できます。](https://liferay-support.zendesk.com/hc/article_attachments/360013312771/service-builder-service-diagram.png)
    
    • リモートサービス(エンティティの remote-service 属性が ではなく設定されている場合にのみエンティティに対して生成されますfalse <code>in service.xml

      • [ENTITY_NAME]サービス:リモートサービスインターフェイス。
      • [ENTITY_NAME]ServiceImplREMOTE SERVICE IMPLEMENTATION):リモートサービスの実装。 これは、手動で変更する必要があるリモートサービス内の唯一のクラスです。 ここで、追加のセキュリティチェックを追加し、ローカルサービスを呼び出すコードを作成できます。 ここで追加されたカスタムメソッドの場合、Service Builderは、次に実行するときに、対応するメソッドを [ENTITY_NAME]Service インターフェイスに追加します。
      • [ENTITY_NAME]ServiceBaseImpl:リモートサービスベースの実装。 これは抽象クラスです。 @抽象
      • [ENTITY_NAME]ServiceUtil[ENTITY_NAME]ServiceImplをラップするリモートサービスユーティリティクラス。 このクラスは、後方互換性のためにのみ生成されます。 @Reference 注釈参照することにより、 * Service クラスを使用し` 。
  • [ENTITY_NAME]ServiceWrapper`: `[ENTITY_NAME]Service`を実装するリモートサービスラッパー。 このクラスは、拡張できるように設計し、それはあなたのことができますされ [カスタマイズエンティティのリモートサービスを](/docs/7-1/tutorials/-/knowledge_base/t/customizing-liferay-services-service-wrappers)。 - `[ENTITY_NAME]ServiceSoap`:リモート `[ENTITY_NAME]ServiceUtil` リモートサービスユーティリティがアクセスできるSOAPユーティリティ。 - `[ENTITY_NAME]石鹸`:SOAPモデルと同様 `[ENTITY_NAME]ModelImpl`。 `[ENTITY_NAME]SOAP` はシリアル化可能です。 `[ENTITY_NAME]`は実装していません。
    • モデル

      • [ENTITY_NAME]モデル:ベースモデルインターフェイス。 このインターフェイスとその [ENTITY_NAME]ModelImpl 実装は、Service Builderが生成するデフォルトプロパティアクセサーのコンテナーとしてのみ機能します。 ヘルパーメソッドとすべてのアプリケーションロジックを [ENTITY_NAME]Impl追加する必要があります。
      • [ENTITY_NAME]ModelImpl:ベースモデルの実装。
      • [ENTITY_NAME][ENTITY_NAME] [ENTITY_NAME]モデルを拡張するモデルインターフェイス。
      • [ENTITY_NAME]Impl:(モデルの実装)モデルの実装。 このクラスを使用して、ヘルパーメソッドとアプリケーションロジックをモデルに追加できます。 ヘルパーメソッドやアプリケーションロジックを追加しない場合は、自動生成されたフィールドゲッターとセッターのみが利用可能です。 このクラスにカスタムメソッドを追加するたびに、Service Builderは、次に実行するときに、対応するメソッドを [ENTITY_NAME] インターフェイスに追加します。
      • [ENTITY_NAME]ラッパー:ラッパー、ラップ [ENTITY_NAME]。 このクラスは、拡張できるように設計され、それはあなたができますされ エンティティカスタマイズ

      図3:Service Builderはこれらのモデルクラスとインターフェイスを生成します。 カスタムメソッドをサービスレイヤーに追加できるのは、 ENTITY_NAMEImpl (たとえば、イベントエンティティのEventImpl)のみです。

    Service Builderが生成する各ファイルは、関連するFreeMarkerテンプレートから組み立てられます。 FreeMarkerテンプレートは、 com.liferay.portal.tools.service.builder モジュールの / com / liferay / portal / tools / service / builder / dependencies / フォルダーにあります。 たとえば、Service Builderは service_impl.ftl テンプレートを使用して * ServiceImpl.java クラスを生成します。

    Service Builderが生成する任意の * Impl クラスを変更でき。 最も一般的である <code>* LocalServiceImpl* ServiceImpl 及び * Implを。 他のクラスを手動で変更した場合、Service Builderは次に実行したときに変更を上書きします。 * LocalServiceImpl クラス、 * ServiceImpl クラス、または * Impl クラスのメソッドを追加、削除、またはメソッドシグネチャを変更するたびに、Service Builderを再度実行して、影響を受けるインターフェイスとサービスを再生成する必要がありますJAR。

    おめでとうございます! アプリケーションの初期モデル、永続性、およびサービスレイヤーを生成し、生成されたコードを理解しました。

    関連トピック

    Service Builderとは

    Service Builderの実行

    サービスコンテキストについて

    ローカルサービスの作成

    « Service Builderの実行反復開発 »
  • この記事は役に立ちましたか?
    0人中0人がこの記事が役に立ったと言っています