問題タブ [lazy-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.
architecture - ドメインクラスに「最後の20件」プロパティを実装する方法は?
StackOverflow のドメイン モデルを実装する必要があるとしましょう。
ORM を行っている場合、「最後のコメント」やその他の「最後の」ものを取得するためのプロパティを定義 (およびマップ) するにはどうすればよいですか? これはドメインモデルに反映されるべきだと私には思えます。
「すべてのコメント」が必要な場合もありますが...
silverlight - ASP.NETアプリのHibernateDAOレイヤーを再設計してSilverlightに移動するにはどうすればよいですか?
最後に、これについて答えを得てみてください。
データアクセスにHibernateを使用する単純なASP.NETアプリがあります。GUIは、「CalculateTotalSumOfOrders()」のようなCustomerオブジェクトのメソッドを呼び出すことができます。遅延読み込み(最適ではありませんが)は私にとってはうまくいきます。OrdersおよびOrderLinesコレクションがドメインオブジェクトで参照されると、データベースから自動的にフェッチされます。
ここで、ASP.NETよりも見栄えが良いため、同じアプリをSilverlightに書き直していると仮定します。Silverlightクライアントがブラウザーで実行されているため、遅延読み込みやデータアクセスを実行できなくなりました。Silverlightクライアントにデータを取り込むために使用するサービスの種類についてあまり考えずに、これを解決するにはどうすればよいですか?
apache-flex - Silverlight、非同期、遅延読み込み、最善の方法は何ですか?
私は Silverlight/flex を使い始めて、すぐに非同期サービス呼び出しにぶつかりました。私は、データ アクセスの問題をサーバー フェッチ メカニズムまたは別のメカニズムを使用してオブジェクト指向の方法で解決することに慣れています。
次の簡単なコード例があります。
私の理解が正しければ、このコードは Flex/Silverlight では不可能です。遅延読み込みにより、コールバックを使用する必要があります。IMO 上記の単純な例は、大きな混乱になります。
上記を実装するための構造化された方法を教えてもらえますか?
編集:
- 問題は Flex/Silverlight でも同じです。疑似コードで問題ありません。
- 実際には ORM 関連ではありませんが、ほとんどの orms は遅延読み込みを使用するため、そのタグを削除します
- 問題はモデルの遅延読み込みです
- 上記の例は、すべてのデータがメモリ内にある場合に非常に実行可能ですが、一部はサーバーから取得する必要があると想定しています
- データがすでにロードされていて、非同期フェッチが不要な場合があるため、クロージャーは役に立たない
nhibernate - ActiveRecord を使用した nHibernate での遅延読み込みエンティティの一括読み込み
私は、さまざまな集合ルートのセットを持つリッチ オブジェクト モデルを持つプロジェクトに取り組んでいます。
Castleスタック (モノレールから ActiveRecord を使用した nHibernate まで) を使用しています。
集約ルートを遅延としてマークし[ActiveRecord(Lazy = true)]
、オブジェクト グラフを熱心にフェッチするために、リポジトリで「熱心な」ルーチンをカスタマイズしました。HQL を使用して、ルートの子コレクションから熱心なフェッチを定義します。
たとえば、集約ルート (および遅延ロードとマークされている)の場合、完全なグラフのエンティティをAccount
熱心にフェッチします。Account .. Order .. Product
したがって、これまでのところ驚くことはありません(うまくいけば)。
上記の例で、Product もマークされている場合[ActiveRecord(Lazy = true)]
、HQL の熱心なフェッチ ディレクティブが停止しているように見えます。
遅延ロードされた子オブジェクトの熱心なフェッチを強制する方法を知っている人はいますか??
乾杯イアン
更新:
ここに hql の例があります。以下の「me.yahoo.com/../1」の例を使用すると、IMuliQuery を使用して、多対多の関係をフェッチするときに N+1 の依存関係を解決しています。また、多対多のマッピング クラスを明示的に使用しています。その結果、本社は次のようになります。
...これにより、2 つの sql ステートメントが実行され、必要な最小限の行セットが返されます。これを単一のオブジェクト グラフに解決できます。良い。
しかし...たとえば、Address
遅延ロードとマークされた(そしてOrder
そうではなかった)場合、アクセスOrder
はそれ以上のSQLステートメントをトリガーしませんAddress
が、どちらも熱心にロードされているにもかかわらず、アクセスは実行します。
Address
では、上記の遅延ロードされたエンティティが上記のステートメントによって熱心にフェッチされないのはなぜでしょうか?
lazy-loading - ActiveRecord の例外「コレクションの遅延初期化に失敗しました - セッションがありません」に関するヘルプ
Castle ActiveRecord を使用して Web アプリを作成していますが、遅延ロードされた関連オブジェクトのリストにアクセスしようとすると、常にこの例外が発生します。これが私のコードです:
RegistrationFields プロパティは次のようになります。
foreach ループで「eventObj.RegistrationFields」にアクセスすると、例外が発生します。また、activeRecord 構成設定で isweb="true" 属性を設定するようにしました。なぜこれが起こるのか誰にも分かりますか?これが私の設定です:
c# - 遅延リストを集約するための設計パターン
以下のようなプログラムを書いています。
- 指定されたディレクトリで正しい拡張子を持つすべてのファイルを検索します
- Foreach、それらのファイルで特定の文字列のすべての出現箇所を検索します
- 各行を印刷する
これを一連のジェネレーター関数 (yield return
一度に 1 つの項目を呼び出して遅延ロードされたもののみを返すもの) として機能的に記述したいので、私のコードは次のようになります。
これで問題ありませんが、最後にいくつかの統計を出力したいと思います。このようなもの:
問題は、上記のように「純粋な関数」スタイルでコードを記述すると、各項目が遅延ロードされることです。
最後の foreach ループが完了するまで、合計で一致するファイルの数しかわかりません。また、一度に 1 つのアイテムしかyield
編集されないため、コードには以前に見つかったものの数を追跡する場所がありません。LINQ のmatchingLines.Count()
メソッドを呼び出すと、コレクションが再列挙されます。
この問題を解決する方法はたくさん考えられますが、どれもやや醜いようです。これは、人々が以前にやったことがあると思います。これを行うためのベスト プラクティスの方法を示す優れたデザイン パターンがあると確信しています。
何か案は?乾杯
java - Spring と Hibernate、遅延開始の問題
Spring と Hibernate を使用してデスクトップ アプリケーションを開発していますが、遅延開始に問題があります。Web を調べたところ、すべての解決策が open session in view パターンに関連していますが、このパターンは使用できません。sessionfactory
からも取得しようとしましHibernateTemplate
たが、切断されたセッションが返されます。
他の解決策を知っている人はいますか?
hibernate - openSessionInViewInterceptor でも LazyInitializationException
openSessionInViewInterceptor を使用しているにもかかわらず、LazyInitializationException に問題があります。そのトピックに関する非常に多くの投稿を読み、3 つまたは 4 つの異なるアプローチを試みました。
まず、Hibernate 構成ファイルの lazzy 属性を false に設定したくないということです。だから、私はその問題に対する実際の解決策を望んでいます。Spring 2.5、Hibernate 3、Netbeans、および Tomcat を使用しています。
私の実装は次のとおりです。
サーブレット.xml
applicationContext.xml
TasquesService.java
TasquesDAOHibernate.java
重要なファイルだと思います。私は多くのことを試しましたが、常に LazyInitializationException または
org.hibernate.HibernateException: スレッドにバインドされた Hibernate セッションがありません。構成では、ここで非トランザクション セッションを作成することはできません ...
どっちが悪いのかわからない。
前もって感謝します!
json - Struts2 JSON プラグインが「遅延」データで機能しない
遅延フェッチされる OneToOne 関係を持つエンティティがあります。
これは、 JSONPlugin (Struts 2 の「公式」json プラグイン) のJSONUtil クラスを使用して、すべてのエンティティを取得し、それらを JSON としてシリアル化しようとする、私が行うテストです。
そして、これは私が得る例外です (このプラグインを Struts2 アクションと @JSON アノテーションで使用した場合と同じ例外です):
私は Hibernate を使用しており、fetch=FetchType.EAGER を変更すると上記と同じコードが機能します。遅延読み込みはプロキシオブジェクトを生成し、それが失敗すると思います。
私の質問は:遅延ロードされた属性を含むオブジェクトをシリアル化することは可能ですか?