問題タブ [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.

0 投票する
0 に答える
144 参照

java - Hibernate のセカンド レベル キャッシュが OneToOne アソシエーションで機能しない

Hibernate の 2 次キャッシュを有効にしようとしていますが、OneToOne 関係に対して複数のクエリが発行されることを回避できません。

私のモデルは次のとおりです。

キャッシュ内のwith idを使用して実行するsession.get(Business.class, id)と、読み込み用のクエリは発行されませんが、.BusinessidBusinessAddress

Address がリレーションの所有者で、Business キャッシュ エントリにAddress.id情報がないことは理解していますが、*ToMany リレーションと同じメカニズムを適用して、フィールドごとに新しいキャッシュ領域を作成することで、この問題を解決できないでしょうか? ビジネス 1 がアドレス 2 に関連していると仮定すると、最初の読み込み後にキャッシュに次のリージョンとエントリが存在することになります。

で注釈Address.businessを付け@NaturalIdAddressクラスに@NaturalIdCache. キャッシュ領域が作成され、移入されますが、session.get(Business.class, id)使用されません。

私のBusinessモデルには、外部キーが (ビジネスではなく) 反対側にある OneToOne リレーションがさらに多くあり、データベース サーバーが HTTP リクエストごとに数十のクエリを処理する必要があるため、一度にいくつかをリストする必要があります。

Hibernate のユーザー ガイド、2LC に関する Vlad Mihalcea の説明とそのメモリ内脱水形式、Baeldung の説明、およびその他の StackOverflow の回答をいくつか読みましたが、これを解決する方法が見つかりません。