問題タブ [hibernate-cache]
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.
java - Hibernate のセカンド レベル キャッシュが OneToOne アソシエーションで機能しない
Hibernate の 2 次キャッシュを有効にしようとしていますが、OneToOne 関係に対して複数のクエリが発行されることを回避できません。
私のモデルは次のとおりです。
キャッシュ内のwith idを使用して実行するsession.get(Business.class, id)
と、読み込み用のクエリは発行されませんが、.Business
id
Business
Address
Address がリレーションの所有者で、Business キャッシュ エントリにAddress.id
情報がないことは理解していますが、*ToMany リレーションと同じメカニズムを適用して、フィールドごとに新しいキャッシュ領域を作成することで、この問題を解決できないでしょうか? ビジネス 1 がアドレス 2 に関連していると仮定すると、最初の読み込み後にキャッシュに次のリージョンとエントリが存在することになります。
で注釈Address.business
を付け@NaturalId
、Address
クラスに@NaturalIdCache
. キャッシュ領域が作成され、移入されますが、session.get(Business.class, id)
使用されません。
私のBusiness
モデルには、外部キーが (ビジネスではなく) 反対側にある OneToOne リレーションがさらに多くあり、データベース サーバーが HTTP リクエストごとに数十のクエリを処理する必要があるため、一度にいくつかをリストする必要があります。
Hibernate のユーザー ガイド、2LC に関する Vlad Mihalcea の説明とそのメモリ内脱水形式、Baeldung の説明、およびその他の StackOverflow の回答をいくつか読みましたが、これを解決する方法が見つかりません。