JHipsterドメイン言語(JDL) - オプション パーマリンク to " JHipsterドメイン言語(JDL) - オプション"

概要 パーマリンク to "概要"

JHipsterでは、ページ区切りやDTOなどのエンティティのオプションを指定できます。 JDLでは、エンティティのアノテーションまたは次の構文を使用して、同じ操作ができます。

entity A {
  name String required
}
entity B
entity C

dto A, B with mapstruct

paginate A with infinite-scroll
paginate B with pagination
paginate C with pager  // pagerはAngularJSでのみ利用可能

service A with serviceClass
service C with serviceImpl

使用可能なオプションの完全なリストは、こちらにあります。

  1. 操作方法
  2. 構文
  3. XYZオプションを使用
    1. 基本の単項の例
    2. 基本の二項の例
    3. all, * の例
    4. all, * の除外の例(単項)
    5. all, * の除外の例(二項)
    6. カスタム値を持つオプション
    7. 混在する例
  4. サービスについて
  5. マイクロサービス関連のオプション
  6. カスタム・アノテーション
  7. 使用可能なオプション
  8. 関連項目

操作方法 パーマリンク to "操作方法"

次の2種類のオプションがあります。

  • 単項(オプション値なし)
  • 二項(値付き)

エンティティにオプションを適用するには、次の3つの方法があります。

  • オプション名(dto, readOnlyなど)の使用。例を参照してください。
  • アノテーションの使用
  • use XYZ形式を使用

これらを混在させると読みにくくなるため、お勧めしません。


構文 パーマリンク to "構文"

通常のフォームの場合は以下です。

<オプション名> <エンティティリスト>

または

<オプション名> <エンティティリスト> with <オプション値>

または

<オプション名> <エンティティリスト> with <オプション値> except <除外エンティティリスト>

または 

<オプション名> <エンティティリスト> except <除外エンティティリスト>
  • 単項オプションの場合
    • オプション名とリストが必要です。
    • 除外されるエンティティはオプションでexceptキーワードを付けます(詳細は以下を参照してください)。
  • 二項オプションの場合
    • エンティティリストは、withキーワードおよびオプション値の前に配置されます。
    • ここでも、除外されるエンティティは最後にexceptキーワードを付けます。

アノテーションは以下です。

@<オプション名>
entity <エンティティ名>

または

@<オプション名>(<オプション値>)
  • Javaと同様に、アノテーションは括弧内の値を取ることができます。
    • オプションに応じて、値はオプションになる場合とならない場合があります。

XYZオプションを使用 パーマリンク to "XYZオプションを使用"

useオプション形式で、エンティティーにいくつかのオプションを指定できます。 これはJHipster Code 2020で作成されたもので、その作成理由は次のとおりです。

  • オプションを無効にする課題を解決します(JHipsterには’no’を示す方法が複数あります:no, false, none
  • エンティティごとにオプションをグループ化する方法を提示できます
entity A
entity B
entity C

use serviceClass for * except C
use mapstruct, serviceImpl, infinite-scroll for A, B
use pagination for C
useオプションの値 コメント
mapstruct エンティティのDTOを作成するかどうか。エンティティにDTOがあってもサービスがない場合は、'serviceClassが使用されます'
serviceClass
serviceImpl
pagination アプリケーションがCassandraを使用する場合、オプションとしてのページ区切りは禁止です
infinite-scroll アプリケーションがCassandraを使用する場合、オプションとしてのページ区切りは禁止です
elasticsearch アプリケーションでsearchEngineオプションを有効にする必要があります
couchbase アプリケーションでsearchEngineオプションを有効にする必要があります

パーマリンク to "例"

各例には、次の3つの形式があります。

  • 標準形式
  • アノテーションベースの形式
  • use形式(該当する場合)

基本の単項の例 パーマリンク to "基本の単項の例"

標準形式:

entity A

readOnly A

アノテーションベース形式:

@readOnly
entity A

基本の二項の例 パーマリンク to "基本の二項の例"

標準形式:

entity A

dto A with mapstruct

アノテーション形式:

@dto(mapstruct)
entity A

useキーワードの使用:

entity A

use mapstruct, serviceImpl, pagination for A

all, * の例 パーマリンク to "all, * の例"

all* はエイリアスです。

標準形式:

entity A
entity B

dto all with mapstruct

アノテーション形式:

@dto(mapstruct)
entity A

@dto(mapstruct)
entity B

useキーワードの使用:

entity A
entity B

use mapstruct, serviceImpl, pagination for *

all, * の除外の例(単項) パーマリンク to "all, * の除外の例(単項)"

標準形式:

entity A
entity B

skipClient * except A

アノテーション形式:

entity A

@skipClient
entity B

useキーワードの使用:

entity A
entity B

use mapstruct, serviceImpl, pagination for * except A

all, * の除外の例(二項) パーマリンク to "all, * の除外の例(二項)"

標準形式:

entity A
entity B

dto all with mapstruct except A

アノテーション形式:

entity A

@dto(mapstruct)
entity B

useキーワードの使用:

entity A
entity B

use mapstruct, serviceImpl, pagination for all except A

カスタム値を持つオプション パーマリンク to "カスタム値を持つオプション"

entity A
entity B

microservice all with mySuperMS

混在する例 パーマリンク to "混在する例"

標準形式:

entity A
entity B
entity C

readOnly B, C
dto * with mapstruct except C
service * with serviceClass except C
search A with elasticsearch

アノテーション形式:

@dto(mapstruct)
@search(elastisearch)
@service(serviceClass)
entity A

@readOnly
@dto(mapstruct)
@service(serviceClass)
entity B

@readOnly
entity C

サービスについて パーマリンク to "サービスについて"

サービスの指定がない場合、リポジトリインタフェースを直接呼び出すリソースクラスが作成されます。これは デフォルトで最も単純なオプションです(Aを参照)。

service with serviceClass(Bを参照)は、リポジトリインタフェースを呼び出すサービスクラスをリソースが呼び出すようにします。 service with serviceImpl(Cを参照)は、リソースクラスによって使用されるサービスインタフェースを作成します。

このインタフェースは、リポジトリー・インタフェースを呼び出す具象クラスによって実装されます。

確実でない限りサービスを使用しないことは、最も簡単なオプションであり、CRUDに適しています。クラスでサービスを使用するのは 複数のリポジトリを使用するビジネスロジックのため、サービスクラスに最適です。JHipsterの開発者陣は 不要なインタフェースを好みません。しかし、気に入ったのであれば、implを使ってサービスを利用してください。

entity A
entity B
entity C

// Aに対応するサービスは無し
service B with serviceClass
service C with serviceImpl

マイクロサービス関連のオプション パーマリンク to "マイクロサービス関連のオプション"

JHipster v3では、マイクロサービスを作成できます。JDLでエンティティを生成するためのいくつかのオプションを指定できます。 マイクロサービスの名前と検索エンジンです。

マイクロサービスの名前(JHipsterアプリの名前)を指定する方法を次に示します。

entity A
entity B
entity C
microservice * with mysuperjhipsterapp except C
microservice C with myotherjhipsterapp
search * with elasticsearch except C

最初のオプションは、マイクロサービスにエンティティを処理させたいことをJHipsterに伝えるために使用され、2番目のオプションは エンティティの検索方法とエンティティを検索対象とするかどうかを指定します。


カスタム・アノテーション パーマリンク to "カスタム・アノテーション"

JDLでは、次のようなカスタムアノテーションが可能です。

@customAnnotation(customValue)
entity A

これの主なユースケースはBlueprintです。場合によっては、エンティティやフィールドのカスタムオプションが必要になることもあります。 通常のオプション(dto, paginationなど)の場合、これらのオプションはCLIと同様にJSONで生成されます。 ただし、カスタムオプションの場合は、ダンプされたJSONのoptionsキーの下に生成されます。


使用可能なオプション パーマリンク to "使用可能なオプション"

JDLでサポートされているエンティティオプションは次のとおりです。

あなたが探しているものではありませんか?アプリケーションのオプションをチェックしてください。

JDLオプション名 オプションタイプ デフォルト値 指定可能な値 コメント
skipClient unary false これにより、クライアントコードの生成がスキップされます。
skipServer unary false これにより、サーバ・コードの生成がスキップされます
noFluentMethod unary false 詳細はこのメモ を参照してください。
filter unary false 詳細はフィルタリングを参照してください。もしエンティティがフィルタされていても サービスがない場合は、'serviceClass'が使用されます。
readOnly unary false このオプションを追加すると、エンティティがreadOnlyになります。 詳細はこのリリースノート を参照してください。
dto binary no mapstruct, no エンティティのDTOを作成するかどうか。エンティティにDTOがあってもサービスがない場合は、'serviceClass'が使用されます。
service binary no serviceClass, serviceImpl, no
paginate binary no pagination, infinite-scroll, no アプリケーションがCassandraを使用している場合、ページ付けは禁止です
search binary no elasticsearch, no アプリケーションでsearchEngineオプションを有効にする必要があります
microservice binary custom value マイクロサービスアプリケーション内で宣言されたすべてのエンティティに自動的に追加されます
angularSuffix binary カスタム値
clientRootFolder binary カスタム値

関連項目 パーマリンク to "関連項目"

アプリケーションのオプションは、ここにあります。