問題タブ [eager-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2407 参照

ruby-on-rails - Arel (Rails 3) との Eager-loading アソシエーション カウント

簡単なタスク: 記事に多くのコメントがある場合、記事の長いリストに各記事のコメント数を表示できます。このデータを Arel でプリロードする方法を考えています。

READMEファイルの「Complex Aggregations」セクションでは、そのような状況について説明しているようですが、サンプル コードが正確に提供されているわけではなく、結合された 1 つのクエリではなく 2 つのクエリで実行する方法も提供されていません。パフォーマンス。

以下を考えると:

それぞれのコメント数を設定した記事をプリロードするにはどうすればよいですか?

0 投票する
2 に答える
1889 参照

entity-framework - n層アプリケーションのEntityFramework-遅延読み込みと熱心な読み込みパターン

この質問は私が解決策を見つけようとしている1年以来のように私を眠らせませんが...それでも私の心には何も起こりませんでした。これは非常に一般的な問題だと思うので、おそらくあなたは私を助けることができます。

私はn層のアプリケーションを持っています:プレゼンテーション層、ビジネスロジック層、モデル層。簡単にするために、私のアプリケーションのプレゼンテーション層に、ユーザーが顧客を検索できるフォームが含まれているとします。これで、ユーザーはUIを介してフィルターに入力し、ボタンをクリックします。何かが起こり、リクエストはプレゼンテーション層に到着し、のようなメソッドになりCustomerSearch(CustomerFilter myFilter)ます。このビジネスロジックレイヤーにより、シンプルになりました。モデルにクエリを作成し、結果を取得します。

さて、質問:データのロードの問題にどのように直面しますか?つまり、ビジネスロジック層は、その特定のメソッドがそのフォームだけで呼び出されることを認識していません。したがって、リクエストフォームに必要なのはCustomerオブジェクトだけなのか、LinkedOrderエンティティを持つCustomerオブジェクトだけなのかはわかりません。

私はもっ​​とよく説明しようとしています。私たちのフォームは、名前で検索している顧客をリストしたいだけです。それは注文とは何の関係もありません。したがって、ビジネスロジッククエリは次のようになります。

現在、これは正しく機能しています。2日後、上司から、他の顧客と同じように顧客を検索できるフォームを追加するように求められました。各顧客が作成した注文の総数を表示する必要があります。次に、そのクエリを再利用して、注文を添付(含む)してそれを取り戻すロジックを追加したいと思います。

このリクエストをどのように処理しますか?

これが私が今から持っていた最高の(私が思う)アイデアです。ご意見をお聞かせください。BLLのCustomerSearchメソッドはクエリを直接作成しませんが、次のようなObjectQueryを構成するプライベート拡張メソッドを通過します。

しかし、それは複雑すぎるように見えるので、これは私を納得させません。

ありがとう、マルコ

0 投票する
1 に答える
525 参照

ruby-on-rails - このRailsアソシエーションに熱心に負荷をかける

ユーザーのリストがあるrailsアプリがあります。私はユーザー間でさまざまな関係を持っています。たとえば、一緒に仕事をしている、友達、優先しているなどです。ユーザーを一覧表示するとき、現在のユーザーが特定のユーザーを友達に追加できるかどうかを判断する必要があります。

can_request_friendship_with(user)は次のようになります。

私の問題は、これは私の場合、ユーザーごとに4つのクエリを意味することです。リスト10のユーザーは40のクエリを意味します。どういうわけかこれを熱心にロードできますか?

0 投票する
3 に答える
1198 参照

ruby-on-rails - Rails - 関連付けられたレコードの数を熱心にロードしますが、レコード自体はロードしません

レンダリングに時間がかかるページがあります。時間の半分 (3 秒) は、熱心にロードされたアソシエーションの束を持つ .find 呼び出しに費やされます。私が実際に必要とするのは、テーブルに表示するために、それぞれの場合に関連付けられたレコードの数だけです。実際のレコード自体は必要ありません。カウントを熱心にロードする方法はありますか? 簡単な例を次に示します。

私のテーブルでは、各行 (つまり、各科目) について、科目フィールドの値と、各科目に関連する質問の数を表示するだけです。これらの要件に合わせて上記の検索呼び出しを最適化できますか?

グループフィールドを使用することを考えましたが、完全な呼び出しにはいくつかの異なる関連付けが含まれており、いくつかの二次関連付けが含まれているため、group by は機能しないと思います。

この場合の :tags は、タグ付けによる二次的な関連付けです。何が起こっているのかはっきりしない場合に備えて、ここに私の関連付けを示します。

アドバイスに感謝します-最大

0 投票する
3 に答える
1873 参照

linq-to-sql - LINQ-to-SQLはオブジェクトグラフ全体を熱心にロードします

LINQ-to-SQLオブジェクトグラフ全体を特定のポイントから下にロードし、すべての子コレクションとその中のオブジェクトなどをロードする必要があります。これは、オブジェクト構造とデータをXMLにダンプするために使用されます。

データを「整形」するためにハードコードされた大量のDataLoadOptionsのセットを生成せずにこれを行う方法はありますか?

0 投票する
2 に答える
1977 参照

nhibernate - nHibernate - 子リストがすでに入力されているリストを熱心にフェッチする

私はいくつかのオブジェクトを持っています:

これらのクラスは nHibernate を使用して MS Sql にマップされます - クラスごとに db にテーブルがあります...

アカウントのすべての子コレクションが最も効率的な方法で取り込まれた List を返すメソッド GetAccounts(int PersonID) をリポジトリに作成したいと考えています。誰かがこれを行う方法についての指針を教えてもらえますか-リストをマッピングでサブセレクトとして設定したくありません...

ありがとう。

0 投票する
1 に答える
507 参照

ruby-on-rails - Railsの熱心な読み込みを理解するのを手伝ってください

アクティブ レコードでの熱心な読み込みの仕組みについては、少し混乱しています。Bookモデルに多数のモデルがありPages、次のクエリを使用して本をフェッチするとします。

今、これは私が混乱しているところです。私の理解では、それ@book.pagesは既に読み込まれており、別のクエリを実行しません。しかし、特定のページを見つけたいとしたら、どうすればよいでしょうか?

最初の例が別のクエリを実行するため、熱心な読み込みが無意味になる、またはアクティブ レコードが別のクエリを実行する必要がないことを知るのに十分賢いと考えるのは正しいですか?

また、私の 2 番目の質問ですが、場合によっては熱心な読み込みがデータベースに集中し、複数の小さなクエリが 1 つの大きなクエリよりも効率的であるという議論はありますか?

ご意見ありがとうございます。

0 投票する
1 に答える
2311 参照

java - JPA2を使用してHibernateにOneToManyを積極的にロードする

私はとエンティティ@OneToManyの間に単純なものがあります:PersonPet

Person関連するすべてのをロードしたいと思いますPet。だから私はこれを思いついた(テストクラスの中で):

ただし、SQLログをオンにすると、3つのクエリが実行されることがわかります(DBに2人のユーザーがいます)。

任意のヒント?

ありがとうGergo

0 投票する
1 に答える
1647 参照

c# - テーブルで Nhibernate が 2 回参加する

次のクラス構造を検討してください...

NHibernate を使用してListViewControl クラスを熱心にロードしたいと考えています。Fluent を使用したマッピングは次のとおりです。

これが私が熱心にロードしようとしている方法です

さて、私の問題は、クラスがと の両方でListViewControl正しいレコードを取得することですが、同じレコードのエントリが複数あることです。レコードの数は、テーブルに対して行われた結合の数 (この場合は 2) と同じです。ActionsListViewActionsControlAction

どうすればこれを回避できますか? SetFetchModeクエリからを削除すると、listViews望ましくないプロキシを介してアクションが遅延して読み込まれます。

エイリアスも作成してみました...

これにより、重複するエントリが削除されましたが、熱心に読み込まれませんでした

0 投票する
1 に答える
200 参照

ruby-on-rails - Railsの熱心な読み込み

やあ、私は has_many の質問を持つ Test モデルと、has_many の回答を持つ Question を持っています... :include => [:questions, {:questions => :answers}] で Test のクエリを作成すると、ActiveRecord は 2 つを作成します質問を取得してから回答を取得するためのより多くのクエリ-それらに参加しません!!! :joins ActiveRecord でクエリを実行すると、クエリが作成されますが、後で Test.questions または Test.questions.answers が必要になると、ActiveRecord はこれら 2 つの追加クエリを再度作成します!!! その後、ログ内の質問または回答を列挙すると、オブジェクトごとに他のクエリが表示されますが、キャッシュタグが含まれています...

これは正常ですか?