Spring Frameworkを使用しており、ジャージを介してアプリケーションのサービスレイヤーと直接通信するサイトをセットアップしています。モデル内の特定のものが(必要に応じて)遅延ロードされるシナリオに遭遇していますが、モデルにモデルをフェッチするように指示するサービスまたはdao内で「スイッチを切り替える」ことができるようにしたいと考えています。熱心に、必要な関係を取得するために大量のコードを記述する必要はありません。
これは可能ですか?
たとえば、Criteria
's FetchMode
:を使用してこれをオーバーライドできます。
List parents = session.createCriteria(Parent.class)
.add( Restrictions.like("prop", value) )
.setFetchMode("childs", FetchMode.EAGER)
.list();
これにより、デフォルトで遅延フェッチされた場合でも、子プロパティコレクションが熱心に読み込まれます。
私はあなたのためにこれを行うビルド済みのものを知りませんし、それをググる気もしませんが、あなたがコーディングできるセットアップを想像することができます...
前後に切り替えたいすべてのメソッドは、スロットをSlotでラップするように再コーディングする必要があり、Spring構成では、LazyLoaderとEagerLoaderのどちらを使用するかを知る必要があります。