我已經閱讀了一些關于 Hibernate 快取的文章和問題,但我仍然不了解 SessionFactory 快取的概念:是否可以在沒有任何 3d 部件系統(如 Redis 或 HazelCast)的情況下使用 SessionFactory 擁有和使用應用程式 L2 快取?如果可能的話,使用“平面”SessionFactory 和 SessionFactory 與其他快取系統的主要區別是什么?
uj5u.com熱心網友回復:
Hibernate 二級快取被設計為不知道實際使用的快取提供程式。Hibernate 只需要提供 org.hibernate.cache.spi.RegionFactory 介面的實作,該介面封裝了特定于實際快取提供者的所有細節。基本上,它充當 Hibernate 和快取提供者之間的橋梁。
您可以使用 Ehcache 作為快取提供者,這是一種成熟且應用廣泛的快取。當然,您可以選擇任何其他提供者,只要有 RegionFactory 的實作即可。
所以如果你想為你的休眠會話工廠啟用二級快取,那么你必須使用像 Ehcache 這樣的第三方快取提供程式。
L2 快取需要進行哪些更改
- 屬性檔案更改 -
通過以下兩個屬性,我們告訴 Hibernate L2 快取已啟用,我們將其命名為區域工廠類的名稱:
hibernate.cache.use_second_level_cache=true
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
- 物體級別更改 -
為了使物體有資格進行二級快取,我們使用 Hibernate 特定的 @org.hibernate.annotations.Cache 注釋對其進行注釋,并指定快取并發策略。
@Entity
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private long id;
@Column(name = "NAME")
private String name;
// getters and setters
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487030.html
上一篇:NIFI-將binary.zip作為varbinary上傳到SQLServer
下一篇:潛在空外鍵的JPA多對一映射
