問題タブ [lazy-initialization]

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 に答える
4996 参照

python - プロパティの遅延初期化用のデコレータを作成する方法

プロパティのように機能するデコレータを作成したいのですが、装飾された関数を一度だけ呼び出し、その後の呼び出しでは常に最初の呼び出しの結果を返します。例:

私の考えは、このためのカスタム デコレータを作成することでした。だから私は始めました、そしてこれは私がどこまで来たかです:

ご覧のとおり、キャッシュされた値をどこに保存するかわかりません。最も簡単な解決策は辞書を維持することのようですが、これにはもっと洗練された解決策があるのではないかと思っています。

編集申し訳ありませんが、プロパティを読み取り専用にしたいことを忘れていました。

0 投票する
4 に答える
623 参照

nhibernate - NHibernate:リポジトリから完全にロードされたインスタンスを返すためのパターン

NHibernateにインスパイアされた無限のDALリファクタリング煉獄の一部として、リポジトリパターンを使用して、UIレイヤーからNHibernateを腕の長さに保つようになりました。リポジトリからのLoadメソッドの例を次に示します。

私のウェブサイトがISessionが何であるかを知らないという事実が大好きです。

当然、上記のメソッドはStoredWillをロードせず、プロキシを返すだけなので、遅延初期化の例外が発生し始めました。プロキシのプロパティにアクセスすると、ISessionのスコープ内にいる時間が長くなるため、例外が発生します。何が起こっているのか気づいたとき、私は大声で笑いました。

私はこれを次のように修正しました:

しかし、それはすべて少しばかげているようです。もう少しエレガントなパターンを使用している人はいますか?

皆大好き。

デビッド

0 投票する
6 に答える
21422 参照

scala - scala での遅延関数定義

私は scala を学んでいますが、これは本当にクールな言語だと言わざるを得ません。私はそのパターン マッチング機能と関数リテラルが特に気に入っていますが、私は JavaScript と Ruby のバックグラウンドを持っており、これらの言語で私のお気に入りのパターンの 1 つは、遅延関数とメソッド定義パターンです。JavaScriptでの例は

わずかな調整を加えた同じコードが ruby​​ で機能し、計算の実行後にシングルトン オブジェクトを使用してメソッドを再定義するだけです。この種のことは、高価な計算が含まれていて、結果が必要になるかどうかが事前にわからない場合に非常に便利です。scala では、キャッシュを使用して同じ種類の結果をシミュレートできることを知っていますが、条件付きチェックを回避しようとしており、これまでの実験では否定的な結果が返されました。scala に遅延関数またはメソッド定義パターンがあるかどうかは誰にもわかりませんか?

注: JavaScript コードは Peter Michaux のサイトからのものです。

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

c# - 属性が遅延インスタンス化されるのはなぜですか?

私は、C# の属性が遅延インスタンス化されているように見えることを発見しました。

この例では、新しいAインスタンスを作成するStackOverflowExceptionと が発生しますが、 への呼び出しを削除するとGetCustomAttributes()、実行は正常に続行されます。

どうしてこれなの?装飾するクラスが適切である場合、属性が適切に初期化されることは、私にとってより理にかなっています。

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

iphone - アクセサー/ゲッターと遅延初期化

自動生成されたアクセサー メソッドのオーバーライドについて質問があります。各ゲッターが他のゲッターを参照するため、次は機能しません(私は信じています)。アクセサー メソッドが他のアクセサー メソッドを使用してはならないという規則はありますか? それとも、これらの状況を個別に監視する必要がありますか?

ここで提示された画像の使用は一例であり、この特定の例で何をすべきかについての考えは、一般的な場合ほど重要ではないことを強調しなければなりません。

0 投票する
4 に答える
5312 参照

objective-c - Objective-Cでの遅延読み込み-ゲッター内からセッターを呼び出す必要がありますか?

これは小さな詳細ですが、何かを遅延ロードするたびに、それに巻き込まれます。これらの方法は両方とも受け入れられますか?どちらが良いですか?変数にretainプロパティがあると仮定します。

方法#1

方法#2

まず、アクセサー内の別のアクセサー機能にアクセスしてもよいかどうかわかりません(ただし、理由はわかりません)。しかし、セッターが何か特別なことをした場合(または、プロパティが保持以外のものに変更され、ゲッターがチェックされていない場合)、セッターを経由せずにクラス変数を設定することも同様に悪い可能性があるようです。

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

c# - RelayCommands が一般的に遅延初期化を使用するのはなぜですか?

Josh Smith のRelayCommandを使用する場合、私が見たほとんどの例では、次のような遅延初期化を使用しています。

次のように、コンストラクターで RelayCommand を作成するのではなく、

ここで遅延初期化を使用する利点は何ですか? バインディングを設定するときに get プロパティを呼び出す必要があるため、コンストラクターでの設定よりもこのメソッドを使用する理由がわかりません。

ここで何か不足していますか?

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

java - 怠惰に初期化されたHibernateコレクションをフィルタリングする

珍しいことではないと確信しているので、これは非常に簡単な答えかもしれません。同様の質問がいくつかありますが、私の問題を説明しているようには見えません。

車と人の2つのオブジェクトがあります。彼らは多対多の関係にあります。つまり、車は複数の人が所有でき、人は複数の車を所有できます。 Car怠惰に初期化された:のセットがありDriversます

25歳未満の所有者がいるすべての青い車を見つけたい:

私の問題は、リストを繰り返してgetDrivers()各車を呼び出すと、コレクションが初期化され、その車のすべてのドライバーが取得されることです。私.list()が走ったのは各車の結果を設定していないと思います。

SQL hibernateが生成しているものを手動で実行した場合に期待する結果が返されるので、基準が問題ではないと合理的に確信しています。

なぜこれが発生するのかは理解できますが、各車を繰り返し処理し、各車のドライバーのクエリを実行せずに回避する方法がわかりません。できればそうしないようにしたいと思いますので、アドバイスをいただければ幸いです。

前もって感謝します!

0 投票する
4 に答える
959 参照

java - Hibernate -> n:m 関係の LazyInitializationException

Hibernate と LazyInitializationException に問題があります。検索して多くの回答を見つけましたが、それらを使用して問題を解決することはできません。Hibernate は初めてだと言わざるを得ないからです。

エラーが発生した場合は、JUnit テストを実行します。

最後に表示された行:

このエラーをスローします:

Person と Project は双方向の n:m:

Person.java :

Project.java :

だから問題は何ですか?

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

java - Springトランザクションと休止状態:遅延初期化

これまで読んだことから、トランザクションを使用することがHibernateの遅延読み込みの問題の解決策になることがわかりました。セッションは、サービスレイヤーでのトランザクション全体を通じて、それ以上の遅延なしに利用できます。

では、トランザクション管理を誤って構成した可能性がありますか?春と休止状態に関しては、私は実際には初心者ですが、皆さんが私を助けてくれるかもしれません。

私の構成:

私のDAO実装では、自動配線を使用して@RepositoryアノテーションとHibernate-templateBeanを注入するだけです。

サービス実装の一般的なヘッダーは次のとおりです。

@Service(readOnly=false)その特定のメソッドで実際に保存/更新されたものがある場合は、注釈を付けます。

サービスに正しい関連付けをロードできるようにするために何か他のものを構成する必要がありますか、それともこれは通常トランザクションによって処理されますか?

今、私は実際に何をすべきか少し混乱しているので、助けてください:)