5
中建立多對多緩存關係我在User
和Role
之間存在多對多的關係。還有第三個名爲UserRole
的表映射爲連接表。在JPA
在JPA中,我可以使用@Cachable
來緩存User
和Role
;但是,當我嘗試讀取與定義爲EAGER
的User
關聯的Role
時,將執行數據庫查詢以從連接表中獲取值。
如何緩存User
和Role
之間的連接表?
中建立多對多緩存關係我在User
和Role
之間存在多對多的關係。還有第三個名爲UserRole
的表映射爲連接表。在JPA
在JPA中,我可以使用@Cachable
來緩存User
和Role
;但是,當我嘗試讀取與定義爲EAGER
的User
關聯的Role
時,將執行數據庫查詢以從連接表中獲取值。
如何緩存User
和Role
之間的連接表?
決定基於here您的緩存併發策略和你的公會的頂部使用@Cache:
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "user_roles")
確保用@Cacheable的兩個實體(在這種情況下,用戶和角色)標記了。
這類似於http://stackoverflow.com/questions/17388780/second-level-caching-for-one-to-many-associations但是這是特定於休眠 – Kaunteya
把@cacheable是你所需要做的,那麼這關係到你的JPA實現是否支持緩存關係字段。其他一些JPA實現(例如DataNucleus JPA)也支持這一點。 – DataNucleus
看起來像hibernate不支持它,雖然有其他註釋可用於休眠,可以實現這一點。感謝您的答覆! – Kaunteya