問題タブ [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 に答える
1162 参照

c# - LazyInitializer.EnsureInitializedを実行しますスレッドセーフの明確な約束がありますか?

プロパティインジェクションでテストできるレイジープロパティを作成したいと思います。レイジーフィールドを使用する場合、テスト中に自分のフィールドをどのように注入できるかわかりません。これが私のコードです:

このコードがスレッドセーフであるというBCLチームからの約束があるかどうか疑問に思っていますか?ドキュメントからは明らかではありませんでした。

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

java - 「org.hibernate.LazyInitializationException: could not initialize proxy – no Session」の唯一の解決策は lazy="false" ですか?

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

java - Hibernate LazyInitializationExceptions を回避するためのアーキテクチャ

私は自分のプロジェクトの始まりです。そのため、Hibernate LazyInitializationExceptions を回避するアーキテクチャを設計しようとしています。これまでのところ、私の applicationContext.xml には次のものがあります。

hibernate.cfg.xml:

Role.java:

そして User.java:

HibernateEMSDao には、データベースからユーザーを保存およびロードするための 2 つの方法があります。

今、次のように実装した場合にテストしましたHibernateEMSDao#getUser

LazyInitializationExcaption を取得しています - セッションが閉じられています。しかし、最初の方法はうまく機能しています。したがって、近い将来、この例外を回避するための提案が必要です。どんな小さな情報でも価値があります。

ありがとうございます。

注:サーバーを再起動した後、そのエラーが発生しました。

編集:コードが追加されました:

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

spring - レイジーアプリケーションリスナー

クラスに追加ApplicationListenerすると、Spring は Bean を積極的にインスタンス化します (おそらく、Bean がすべてのイベントを確実に取得するようにするためです)。

私の場合、「CacheFlush」イベントをリッスンする Bean があります (つまり、いくつ見逃してもかまいません)。

ApplicationEventSpring 3.0 で遅延リスナーを実装するにはどうすればよいですか?

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

objective-c - 間違ってコーディングされた遅延初期化がうまく機能する

意図的にコード化された怠惰な初期化:

それにもかかわらず、以下の生成されたコードシーケンスによる「正しいこと」はありますか?

  • テストのために prop を rax にロードする
  • いずれにせよraxを返す
0 投票する
6 に答える
5694 参照

hibernate - JSF での JPA エンティティの使用。LazyInitializationException を防ぐための最良の戦略はどれですか?

JSF UI から JPA エンティティを編集するベスト プラクティスについて、専門家の意見を聞きたいです。

それで、問題について一言。

永続化されたオブジェクトがMyEntityあり、それをフェッチして編集するとします。私が使用するDAOレイヤーで

MyEntity「親」エンティティのプロキシを持つインスタンスを返します-そのうちの1つがMyParent. MyParentへのプロキシ グリーティングとして取得されます@Access(AccessType.PROPERTY):

そして MyEntity はそれへの参照を持っています:

ここまでは順調ですね。UI では、値オブジェクトを作成せずにフェッチしたオブジェクトを直接使用し、選択リストで親オブジェクトを使用します。

すべて正常にレンダリングされ、何もLazyInitializationException発生しません。しかし、オブジェクトを保存すると、

MyParentプロキシsetId()メソッドについて。

MyParent関係を変更すると、問題を簡単に修正できますEAGER

またはを使用してオブジェクトをフェッチしますleft join fetch p.myParent(実際、それが私が今行っている方法です)。この場合、保存操作は正常に機能し、リレーションは新しいMyParentオブジェクトに透過的に変更されます。追加のアクション (手動コピー、手動参照設定) を実行する必要はありません。非常にシンプルで便利です。

しかし。オブジェクトem.find()が10 個の他のオブジェクトを参照している場合、10 個の追加の結合が発生します。これは、特に参照オブジェクトの状態をまったく使用しない場合、適切なデータベース操作ではありません。必要なのは、オブジェクトの状態ではなく、オブジェクトへのリンクだけです。

これは世界的な問題です。JSF スペシャリストがアプリケーションで JPA エンティティをどのように処理しているかを知りたいと思います。これは、余分な結合とLazyInitializationException.

拡張永続コンテキストは私には適していません。

ありがとう!

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

java - ダブルチェックされたロックと null 処理を備えた LazyReference

私はLazyReferenceクラスを数年間使用しています(もちろん定期的にではありませんが、非常に役立つ場合もあります)。クラスはここで見ることができます。クレジットは、Robbie Vanbrabant (クラス作成者) と Joshua Bloch の著名な「Effective Java 2nd edt」に贈られます。(元のコード)。

クラスは (Java 5+ で) 正しく動作しますが、潜在的な問題が 1 つあります。instanceProvider返された場合(Guiceの契約nullに従ってはいけませんが…)、メソッドを実行するたびに LOCK が保持され、何度も呼び出されます。契約を破った人には良い罰のように見えますが (he-he)、値を設定する可能性のあるフィールドを遅延して初期化する必要がある場合はどうすればよいでしょうか?Provider.get()LazyReference.get()instanceProvider.getnull

LazyReference を少し変更しました。

私見は問題なく動作するはずです(別の意見がある場合は、コメントや批判を投稿してください)。しかし、ブール値volatileから修飾子を削除するとどうなるでしょうか(もちろんそのままにしておきます)。それでも正しく動作しますか?isNullinstance

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

java - LazyInitializationExceptionをより適切に回避する方法は?

現在、@ManyToOne親エンティティに関連付けられている子エンティティがあります。以前の開発者はlazy="false"、セッションが閉じられたときに必要なときにいつでも親を取得するようにこのフィールドを設定しましたlazy="true"が、常に使用されるとは限らないため、そうする必要があると判断しましたが、そうするとLazyInitializationException、セッションが閉じられ、子が親を取得しようとしたときのセッション。

run以下に示すように、メソッドのロジックをsと相互作用するサービスクラスに移動するのが正しいかどうか疑問に思っていました。したがって、現在、サービスクラスは、必要なsが挿入されDAOたプレーンクラスのようなものであり、単に呼び出すだけなので、例外を回避できます。メソッドと結果を返しますDAODAOエンティティと対話するサービスクラスにもっと多くのメソッドを配置する必要があります。これにより、ユーザーが取得され、ログインアクションのすべてがチェックされ、必要に応じて親が取得され、ログイン結果がrunメソッドに返されます。

私はSpringを使用<tx:advice>して、クロージングやその他のトランザクション関連のものを処理します。

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

c#-4.0 - C# 4.0でのlazy機能の使い方について

以下のような Userdetails クラスがあります

ここで Address は、次のようなパブリック フィールドを持つ別のクラスです。

ここで、ユーザーがアプリにログインすると、Userdetails オブジェクトを作成します。現在、userdetails 内でアドレス オブジェクトを頻繁に使用することはありませんが、データは取得しています。

このシナリオでは、C# 4.0 の遅延初期化機能をどのように使用できますか。

データは直接の db クエリから取得され、これらのクラスにはデータを取得するためのコンストラクターやその他の手段がないことに注意してください。これらは、C# でのデータベース フィールドの単なる表現です。

ここで遅延初期化を使用する最良の方法を提案してください。

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

x86 - 静的ストレージ(主にデータセグメント)はセグメンテーション違反を引き起こす可能性がありますか?

staticストレージはコンパイル時に決定されます。ただし、関数に遅延初期化がたくさんあるシナリオを考えてみましょう。

ここではコーディングの実践についてではなく、技術的な側面について説明します。のような他の多くの関数 foo()が実行されると、それらの多くのstatic変数がデータセグメントに導入されます。

コンパイラは、データセグメントにスペースを割り当てるときに、アカウントでも遅延初期化を行いますか。「いいえ」の場合、コードの実行中に実行時にセグメンテーション違反が発生しますか?(メソッド内に多くのstaticデータがある場合に発生する可能性が高くなりtemplateます)。