問題タブ [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.
hibernate - ロールのコレクションを遅延初期化できませんでした:com.pojo.Student.phonenos、セッションまたはセッションが閉じられていません
アノテーションを使用してHibernateマッピングを学習しています。1つのセクションを完了しました。つまり、親テーブルを保存するときに子クラスを自動的に挿入できます。 see_that。
しかし、マスターテーブルをフェッチしているときに子テーブルを取得できませんでした。また、エラーが発生します
私のコードはあなたをレビューするためにここに追加されます。それを通過してください。そして、私に素晴らしいアドバイスをください。Student.java。(親クラス)
Phone.java(子クラス)
私のダオクラス
出力は
ここでは、単方向(外部キー)の1対多マッピング(ジョイントテーブルではなく、双方向)を使用しています。
私の質問を要約する
1)親テーブルをフェッチするときに子テーブルを取得する方法、またはその逆
2)熱心で怠惰なフェッチとは何ですか。
3)1対多マッピングの場合の単方向、双方向、および結合テーブル。どちらがより強力です。
hibernate - Hibernate リストが初期化されているかどうかを調べるにはどうすればよいですか?
Hibernate で、department というクラスがあり、そこに従業員のリストが含まれているとします。従業員のリストを調べて、まだ初期化されているかどうかを判断する方法はありますか? アクセスするプロパティに関係なく、遅延初期化例外が発生します。例外を取得せずに初期化をテストする方法はありますか?
初期化されているかどうかを確認したいのですが、そうでない場合は、データのクエリを実行して入力してください。
c# - C# NHibernate - 要素のリストにアクセスするとエラーがスローされる (遅延初期化に失敗しました...)
MVC2、NHibernate 3.2 を使用しています。
私のクラス:
私はこれで要素を照会します:
車のマッピング:
タイヤのマッピング:
次に、要素をクエリします。
最初の行は問題なく動作しますが、最後の行で次のエラーがスローされます。
[Car] の初期化 - ロールのコレクションの遅延初期化に失敗しました: Car.TireList、セッションまたはセッションが閉じられませんでした
設定ファイルも必要な場合はお知らせください。
ありがとうございました
c# - コンストラクターに限定されないC#読み取り専用機能を使用するにはどうすればよいですか?
C#の「readonly」キーワードは、フィールド宣言に含まれている場合、宣言によって導入されたフィールドへの割り当ては、宣言の一部として、または同じクラスのコンストラクターでのみ発生する修飾子です。
ここで、この「値を1回割り当てる」制約が必要であると仮定しますが、コンストラクターの外部で割り当てを実行できるようにします。おそらく、遅延/遅延評価/初期化です。
どうすればそれができますか?そして、それを良い方法で行うことは可能ですか?たとえば、これを説明するための属性を書くことは可能ですか?
java - スレッドセーフな遅延初期化を実装するには?
スレッドセーフな遅延初期化を実現するための推奨されるアプローチは何ですか? 例えば、
c++ - C++ の共有ポインタ、弱いポインタ、遅延ポインタ
怠惰な初期化パートナーの実装shared_ptr
を知っている人はいますか? weak_ptr
クラスの要件は次のとおりです。
lazy_ptr
コンストラクターの実装を必要とせずに、クライアントがオブジェクトを後で (もしあれば) 構築できるようにするクラス3 つの可能な状態を持つ
weak_lazy_ptr
クラス: まだ構築されていない ( にロックされないshared_ptr
)、構築されている ( にロックされているshared_ptr
)、および破棄されている ( にロックされていないshared_ptr
)
少し前に、完全には機能しなかったいくつかのクラスを作成しました ( CVuの記事はこちらを参照) 。共有ポインターとウィーク ポインターを統合する代わりに使用するモデルの主な問題は次のとおりです。shared_ptr
weak_ptr
すべてのオブジェクトが範囲外になると、他のクライアントがバージョン
lazy_ptr
を保持していても、弱い参照をロックできなくなりますshared_ptr
異なるスレッドでのオブジェクトの構築は制御できません
これらの問題を調整するための他の試み、またはこの分野で進行中の作業へのポインタをいただければ幸いです。
hibernate - 遅延読み込みは@Postconstructでは機能しません
ケース: @PostConstructでユーザーオブジェクトをロードし、任意のテストメソッドでロールを取得しようとすると、lazyinitialization例外が発生しますが、任意のテストメソッドでユーザーオブジェクトをロードしてからロールを取得すると、すべてが正常に機能します。
要件: 各テストメソッドにオブジェクトをロードする必要がなく、またinitメソッドにコレクションをロードする回避策なしで、テストメソッドでレイジー初期化を正常に機能させることができるようにしたいのですが、そのような問題の良い解決策はありますか?ユニットテストで?
objective-c - 遅延インスタンス化と便利なメソッドについて
Singleton
アプリケーション全体でそのインスタンスを使用したい定数クラスがあるとします。
ではsomeClass
、したがって、参照できます[Constants instance] someCleverConstant];
これを入力するとすぐに古くなるので、インスタンスへのショートカットを取得すると便利です。
- では
someClass
、宣言できます@property (nonatomic, weak, readonly) Constants *constants;
- そしてインスタンスへのゲッター
このようにsomeClassで、したがってconstants.someCleverConstant;
代わりに参照できます
これに関するいくつかの質問:
- 私が説明したことは合理的なアプローチですか?
- プロパティを宣言するのは正しい
weak
ですか? - 私が説明した内容にパフォーマンス上の懸念はありますか? 実際にインスタンスを直接呼び出す方が良いでしょうか?
- 20 個のクラスがあり、それぞれが定数インスタンスへの独自のポインターを必要とする状況を考えてみましょう。その場合、このアプローチは機能しますか?
お時間をいただきありがとうございます。
jsf-2 - CDIマネージドBeanとステートフルセッションBeanを使用したLazyInitializationException
ステートフルセッションBeanが挿入されたCDIマネージドBean(JSFで使用される@Namedで注釈が付けられたBean)があります。このセッションBeanはサービスのようなもので、エンティティマネージャ(@PersistenceContext(type = PersistenceContextType.EXTENDED)で注釈が付けられています)を持ち、一部のエンティティを操作するためのメソッドを公開します。これらのエンティティは、ConversationScopedであるマネージドBean上にあります。次に、JSFはマネージドBeanのメソッドを呼び出し、マネージドBeanは「サービス」(ステートフルセッションBean)のメソッドを呼び出します。これが最高のデザインかどうかはわかりませんが、うまく機能していました。ただし、LAZYでフェッチする必要のあるコレクションがいくつかあるエンティティがあります。また、最初にページを開いたときは正常に機能しているように見えますが、ボタンをクリックしたり、アクションを実行したりすると、LazyInitializationExceptionが発生します。誰かに何かアドバイスはありますか?何かおかしいのかわかりません。セッションBeanをステートフルのように配置し、永続コンテキストを拡張しました。このセッションBeanは、エンティティを持つ管理対象Bean内に注入されます。なぜこの例外をスローするのですか?エンティティマネージャーをどのように閉鎖できますか?
これは、問題が発生しているエンティティのコードです。
これはステートフルセッションBeanです。
管理対象Beanは、セッションBeanのメソッドgetParametrosVingentes()を呼び出します。ParametrosUtilの静的メソッドを使用して、ParametrosVingentesを取得(存在する場合)または作成(存在しない場合)します。これは、アプリケーションにParametrosVingentesが1つだけ存在する必要があるためです。他のコンポーネントで使用されるパラメーターを持つのはBeanです。これはParametrosUtilのコードです:
これはマネージドBeanです。
そしてこれはJSFです:
ご覧のとおり、LAZYでフェッチする必要のあるコレクションにバインドされたフィールドがあります。
そしてこれはスタックトレースです:
サービスのgetParametrosVingentesメソッドの最後で、EntityManagerがクリアされ、すべてのエンティティが切り離されていると思います。それが問題でしょうか?
これは、Mojarra2.1.2とEJB3.1を使用してGlassfish3で実行しています。助けてくれてありがとう。
c++ - スレッドセーフクラスの順序付き静的初期化
この投稿は、最後の短い質問では長すぎるように思われるかもしれません。ただし、思いついたデザインパターンについても説明する必要があります。多分それは一般的に使用されていますが、私はそれを見たことがありません(または多分それは単に機能しません:)。
まず、これが(私の理解では)「静的初期化順序の大失敗」のために未定義の動作をするコードです。問題は、Spanish::s_englishToSpanishの初期化がEnglish::s_numberToStrに依存していることです。これは静的に初期化され、異なるファイルにあるため、これらの初期化の順序は未定義です。
ファイル:English.h
ファイル:English.cpp
ファイル:Spanish.h
ファイル:Spanish.cpp
ファイル:StaticFiasco.h
静的初期化順序の問題を解決するために、最初に使用するときに構築するイディオムを使用し、これらの静的初期化を次のように関数ローカルにします。
ファイル:English.h
ファイル:Spanish.h
しかし今、私たちは別の問題を抱えています。関数ローカルの静的データのため、これらのクラスはどちらもスレッドセーフではありません。これを解決するために、両方のクラスに静的メンバー変数とその初期化関数を追加します。次に、この関数内で、関数ローカル静的データを持つ各関数を1回呼び出すことにより、すべての関数ローカル静的データの初期化を強制します。したがって、事実上、プログラムの開始時にすべてを初期化していますが、それでも初期化の順序を制御しています。これで、クラスはスレッドセーフになるはずです。
ファイル:English.h
ファイル:Spanish.h
そして、ここに質問があります:一部のコンパイラが、ローカルの静的データを持つ関数(この場合はコンストラクタ)への呼び出しを最適化する可能性はありますか?したがって、問題は「副作用がある」と正確に何を意味するのかということです。これは、私の理解では、コンパイラがそれを最適化することを許可されていないことを意味します。コンパイラに関数呼び出しを無視できないと思わせるのに十分な関数ローカル静的データがありますか?