0

この投稿を読みました。この投稿で提案されているように、オブジェクト全体を取得できません。MIN、MAX、Count 値を取得しています。というわけで新規投稿。以下は私が欲しいものと私が持っているものです。

  1. 私のSpringアプリはDB(MySQL)に変更を加えません。データを読み取るだけです。DB 内の既存のデータに加えられた変更は認識されません。
  2. すべてのクエリがスカラー データを返します。オブジェクト全体ではありません。(例: Select employee.name,office.address,MIN(employee.rec) from ... where..)

  3. クエリをキャッシュしたい。そのため、休止状態の構成でクエリ キャッシュを有効cacheable="true"にし、名前付きクエリに追加しました。

4.二次キャッシュを有効にしました。

5.持続性クラスに以下のアノテーションを追加。

@Cacheable 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

6. 24 時間ごとにキャッシュを更新したい。timeToLiveSecondsそのため、 ehcache.xml で更新されましdefaultCacheた。

これは正しいアプローチですか?クエリがクエリ キャッシュから第 2 レベルのキャッシュにヒットするかどうかを知るにはどうすればよいですか?

更新: 統計を追加しましたが、第 2 レベルのキャッシュにヒット/ミスはありませんでした。

4

1 に答える 1

1

SQL ロギングと統計生成をオンにします。SQL クエリのログが表示される場合は、キャッシュが機能していないことを意味します。

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.generate_statistics" value="true"/>

二次キャッシュのヒット数を確認するには:

session.getSessionFactory().getStatistics().getSecondLevelCacheHitCount()
于 2013-02-04T08:38:00.423 に答える