2

ATG で指定されたリポジトリ アイテムを遅延ロードする方法を知りたいです。ATG リポジトリ ガイドのLazy Loading Settingsで指定されているすべてのオプションを試しましたが、これまでのところ、遅延ロードされるように構成されたアイテムのすべてのプロパティが親アイテムと共にフェッチされます。

たとえば、User エンティティが Organization と 1 対多の関係にある場合、ユーザー リポジトリ アイテムをロードすると、ユーザーのすべての組織アイテムが請求先住所や配送先住所などのプロパティとともにロードされます。これは、組織コレクションが使用されていない場合でも発生します。

リポジトリ ガイドやその他の落とし穴に記載されているもの以外のいくつかの例を含む返信は素晴らしいでしょう。

4

2 に答える 2

1

プロパティで遅延読み込みが有効になっている場合、プロパティはリポジトリアイテムとともにデータベースからフェッチされません。プロパティは、必要なときにデータベースから(別のSQLクエリを使用して)ロードされます。ページに表示される、またはコンポーネントで使用されるプロパティ。

遅延読み込みプロパティを使用することが理にかなっている場合のいくつかの例:

  1. リポジトリに使用されないプロパティ(多くの場合、大きなコンテンツが含まれる)がある場合、遅延読み込みを有効にするとよいでしょう。たとえば、タイトル、作成日、コンテンツ(長い文字列)。ニュースアイテム(タイトルのみ)のリストを作成日順に表示する場合は、タイトルと作成日のみをロードするのが理にかなっています。したがって、コンテンツプロパティでは遅延読み込みを有効にする必要があります。そのプロパティは、特定のニュースアイテムにアクセスしたときに取得されます。ニュースリストの表示中にすべてのコンテンツプロパティをロードする必要はありません。これにより、ページ表示のパフォーマンスが向上します。

  2. 別の例(上記と同様)は、製品カタログと製品説明プロパティを使用する場合があります。通常、カテゴリページでは、画像とともに商品タイトルのみを表示します。商品の説明は、商品ページが表示されている場合にのみ読み込まれ、表示されます。カテゴリ(またはサブカテゴリ)ページのパフォーマンスを向上させるために、製品の説明プロパティを遅延読み込みとして設定することは理にかなっています。

  3. クエリが非常に多数のリポジトリアイテムを返し、ほとんどの場合それらの一部のみを使用する場合は、遅延読み込みを使用することもお勧めします。使用されていないもの(大きなコンテンツを含む必要はありません)は、遅延ロードできます。

私はすべてのATGプロジェクトで遅延読み込みプロパティを使用してきましたが、これはすばらしい機能だと思います。ただし、適用する前に、すべての長所と短所を考慮する必要があります。時にはそれは善よりも害をもたらすかもしれません。

これにより、遅延読み込みをよりよく理解し、プロジェクトでその機能を使用して楽しむことができるようになることを願っています。

于 2012-12-20T00:42:03.797 に答える