問題タブ [fetching-strategy]

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 投票する
1 に答える
2750 参照

nhibernate - Hibernate AliasToBeanResultトランスフォーマーとコレクション

次のような子コレクションも含むデータ層から DTO を返したいと思います。

ここまでは基本的なクエリですが、子コレクションをエンティティから DTO に変換する方法がわかりません。

これは可能ですか、またはこれを行う別の推奨される方法はありますか?

更新: シナリオについてもう少し情報を追加したいだけです...オーディオ項目のリストを、現在ログインしているユーザーに、タグ、コメントなどの関連エンティティと共に返したいと思います...これらはかなり簡単ですマルチクエリ/フューチャーを使用。

ただし、ユーザーにオーディオ アイテムを表示するときに、他の 3 つのオプションもユーザーに表示したいと考えています。

  • このオーディオ アイテムをお気に入りのリストに追加した天気
  • 彼らがこのオーディオを「高く評価」した天気
  • ログインしたユーザーがこの音声の所有者を「フォロー」している天気

多対多 -> ユーザーアカウント

これが理にかなっていることを願っています...そうでない場合は、もう一度説明します...返された各Audioエンティティのこれらの追加の詳細を熱心にロードするにはどうすればよいですか...20ページのこの情報もすべて必要です。

バッチ フェッチを調べましたが、これは、ログインしているユーザーだけが親指を立てたかどうかを確認するのではなく、オーディオ エンティティごとにすべての親指を立てているようです。

とりとめのない申し訳ありません:-)

ポール

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

hibernate - HibernateでのLEFT JOINとLEFT JOIN FETCHの違いは?

LEFT JOINLEFT JOIN FETCHHibernateの違いを理解しようとしています。

誰でもこれを説明できますか?

ありがとう

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

objective-c - CoreData 内のオブジェクトの最小の日付を取得します

私はこの質問と同じ問題を抱えていますが、@ davedelongの答えはうまくいきません。

Apple Exampleに従うと、オブジェクトのセットで最小の日付を取得するために、次のエラーが発生します

私の理解では、それはNSExpression最大です: のみをサポートしNSArrayます。だから私は別の解決策が必要です。

@davedelong は昇順を使用することを提案したNSSortDescriptorので、私はそうしました:

ここでの問題はsession、フェッチから返されたオブジェクトが、最小のオブジェクトではないように見えることstartDateです。私のテストでは、最新の日付も返されたようですが、一貫していないようです。

すべてのオブジェクトを取得してGCSession並べ替えることもできますが、これはやり過ぎのように思えます。特にGCSession、ユーザーがアプリケーションを使用するときに数が増えることになります。

編集: Apple のサンプル コードのバグを示すテスト プロジェクト。

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

jpa - 熱心に取得した他のコレクションを含むエンティティの熱心なコレクションを取得します

エンティティと文字列の間の M:N 関係に行き詰まっています。ユーザーは複数の役割を持つことができ、各役割を複数のユーザーに割り当てることができます。Role は単なる文字列です。役割は、 と の 2 つの列を持つテーブルに含まれていroleIdますroleName

2 つのエンティティを作成しましたが、まったく機能しません。最初のエンティティはユーザーです:

2 つ目は、接続テーブルに関連付けられたエンティティです。

そして問題は、roleNameコレクションが常に null であることです。私はそれを働かせることができません。@CollectionTable注釈のテーブル名を間違えても、まだ機能します。JPA はサブコレクションをまったくフェッチしません。table に結合されたユーザーのテーブルから選択しますが、テーブルUsersToRolesへの結合がuserRolesありません。

私はそれをすることができますか?別の熱心にフェッチされたコレクションを含むエンティティの熱心なコレクションを取得できますか?

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

architecture - フェッチ戦略とは何ですか?

さまざまな戦略を使用してデータを取得するというコアコンセプトを理解しています。しかし、私は良い要約/定義を見つけることができません。

  • デザインパターンですか?より広いデザインパターンに適合しますか?
  • ORMの実装に固有ですか?(休止状態がたくさん出てきます)
  • それは何をするためのものか?値オブジェクトのコレクション、または...必要なものを返しますか(すべきですか)?
  • 1つに関連付けられている一般的なクラスとメソッドはありますか?
0 投票する
2 に答える
1077 参照

hibernate - Hibernate は単一継承の FetchType を無視します

別のエンティティから継承する 3 つのエンティティがあります。戦略 Single_Table を使用しています

たとえば、クラス B、C、および D は A から継承します

エンティティ B で、別のエンティティ X を熱心にロードしています。残念ながら、Hibernate は私のアノテーションを無視し、エンティティ B ごとに選択を作成してエンティティ X をフェッチします。

私の select ステートメントは次のようになります。

いくつかのコード例:

今、私は Hibernate が A から継承するすべてのクラスを照会することを期待しています。残念ながら、結果行ごとに選択ステートメントを実行して「projekt」を照会することも避けたいと思います。

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

java - Hibernate でのフェッチ戦略と、fetchtype と fetchmode の関係に関するいくつかのクエリはありますか?

ネット上の hibernate fetch 戦略のリンクをいくつか調べました。私が気に入った簡潔で簡潔なリンクの 1 つは http://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/です。4 種類のフェッチ戦略があります。これらは :-

  1. fetch-”join” = 遅延読み込みを無効にし、常にすべてのコレクションとエンティティを読み込みます。
  2. fetch-”select” (デフォルト) = すべてのコレクションとエンティティを遅延ロードします。
  3. batch-size=”N” = 最大 'N' 個のコレクションまたはエンティティをフェッチします。記録しません
  4. fetch-”subselect” = コレクションをサブ select ステートメントにグループ化します。

私の最初の質問は、上記のどれが熱心なまたは遅延読み込みのフェッチ タイプに適していますか?

hibernate fetch 戦略について質問するために、Department クラスで以下のコード スニペットを検討しています。

私の理解によると、フェッチタイプを熱心に言及するとすぐに、結合フェッチ戦略のみが残りますが、フェッチタイプとしてレイジーロードと言及すると、他の3つのオプション、つまり選択、バッチサイズ、サブ選択があります。同意しましたか?私のレガシープロジェクトのコードスニペットを見ると、フェッチタイプが熱心で、フェッチ戦略が互いに矛盾する選択として言及されています。右?

もう 1 つのクエリは、FetchMode を書き込むときにバッチ サイズ オプションが表示されないことです。他の3つのフェッチ戦略が表示されますが、Eclipseでコントロール+スペースを実行しますか?

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

iphone - iPhone:サーバーから必要なデータや画像を一度だけ取得するアルゴリズム

ユーザーが FanWall 画面にコメントを入れることができ、他のユーザーが自分のコメントにコメントしたり、新しいコメントを追加したりできる、FanWall を含む iPhone アプリを実装しました。FanWall画面が読み込まれるたびに、Zipファイルとしてサーバーから画像、コメント、その他のプロパティを含む上位25のコメント(次の25のコメントを読み込むための[さらに読み込む]ボタンがあります..)を取得するため、正常に動作しますが非常に遅くなります。iPhone アプリは、この zip ファイルの plist ファイルを解析して、コメントと画像を Fanwall 画面に配置します。新しいコメントやコメントのコメント、または既存の plist ファイルに加えられた変更をダウンロードする必要があるため、毎回これを行います。ここで明確であることを願っています!誰でも最適なフェッチ戦略について考えてください。ありがとう。

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

domain-driven-design - Udi のフェッチ戦略の実装 - 検索方法は?

バックグラウンド

Udi Dahan は、データ アクセスに使用する便利なパターンとしてフェッチ戦略を提案しています。同意します。

概念は、役割を明確にすることです。たとえば、集約ルート - 顧客があります。アプリケーションのいくつかの部分に顧客が必要です。選択する顧客のリスト、顧客の詳細のビュー、および顧客を非アクティブ化するボタンが必要です。

Udi は、これらの役割ごとにインターフェイスを提案するようです。そのため、購入した最新の 10 個の製品を含むICustomerInList非常に基本的な詳細と、顧客を非アクティブ化する方法があります。各インターフェイスは、それぞれの状況でジョブを完了するのに十分な数の Customer Aggregate Root を公開します。My Customer Aggregate Root は、これらすべてのインターフェースを実装しています。ICustomerDetailIDeactivateCustomer

ここで、これらのロールごとにフェッチ戦略を実装したいと考えています。各戦略は、必要な情報のみを公開するインターフェースの背後にあるため、集計ルートに異なる量のデータをロードできます。

この部分を実装する一般的な方法は、Service Locator または他のスタイルの依存性注入を要求することです。このコードは、たとえば、必要なインターフェイスをICustomerInList取得し、それをロードするためのフェッチ戦略を見つけます ( IStrategyForFetching<ICustomerInList>)。この戦略は、ICustomerInList インターフェイスに必要な情報を含む Customer のみをロードすることを認識しているクラスによって実装されます。

ここまでは順調ですね。

質問

Service Locator またはIStrategyForFetching<ICustomerInList>. 私が目にするすべての例は、既知の ID で 1 つのオブジェクトのみを選択しています。このケースは簡単です。呼び出し元のコードはこの ID を渡し、特定のインターフェイスを取得します。

検索したい場合は?それとも、顧客リストの 2 ページ目が必要ですか? ここで、Fetching Strategy が必要とするより多くの用語を渡したいと思います。

可能な解決策

私が見たいくつかの例では、述語 (特定の集約ルートが結果セットの一部である必要がある場合に true または false を返す式) を使用しています。これは条件には問題なく機能しますが、最初の n 人の顧客だけを取得する場合はどうでしょうか? または、検索結果の 2 ページ目を取得しますか? または、結果はどのようにソートされますか?

私の最初の反応は、汎用パラメーターを myIStrategyForFetching<ICustomerInList>に追加し始めることIStrategyForFetching<TAggregateRoot, TStrategyForSelecting, TStrategyForOrdering>です。これはすぐに複雑で見苦しくなります。リポジトリが異なると、さらに複雑になります。特定の選択方法を使用する場合にのみデータを提供するリポジトリもあれば、特定のタイプの順序付けのみを提供するリポジトリもあります。特定の方法でソートされた集約ルートのみを返す特殊なリポジトリとともに、ソート機能を使用できる一般的なリポジトリを柔軟に実装したいと考えています。

最初に使用したのと同じパターンを適用する必要があるように思えます - How do I make roles explicit? ペイロード Y (検索/順序付けパラメーター) を使用して X (集約ルート) を取得するための戦略を実装する必要がありますか?

編集 (2012-03-05)

毎回集約ルートを返さない場合でも、これはすべて有効です。各インターフェイスが異なる DTO によって実装されている場合でも、IStrategyForFetching を使用できます。これが、このパターンが強力である理由です。何を取得し、何を返すかを集約ルートにマップする必要はまったくありません。

使ってしまいましたIStrategyForFetching<TEntity, TSpecification>。TEntity は私が取得したいものであり、TSpecification は取得したい方法です。

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

objective-c - General CoreData Performance

i have a more or less general question about using coredata the most efficient way.

i have attempted two different approaches of managing data that is shown in a view of my project.

Approach 1: when the view gets loaded i perform all coredata fetches and store the results in an array, the view then retrieves the displayed objects from the array. (ie: objectAtIndex:...)

Approach 2: the viewcontroller itself lets my data handling class perform fetches on the go, whenever a specific coredata object is needed it gets fetched.

on my current project this involes about 200-500 objects that need to be sorted and displayed in a tableview according to their attributes.

the fetch methods are the same wether i load all objects first or when i load them in batches (of correct attributes).

the difference is mainly in the cellForRow method where i have to decide if i want to pick the objects out of an array or directly from coredata.

both methods work just fine, i dont really see any performance differences just now, but i fear that with scaling of the project & more data one or the other way might be slower.

what do you think is the better way to do this?