我有JPA具有特定子類型中表示的用戶對象。例如,考慮User,然後是子類Admin,以及另一個子類Power User。優化在第二級緩存休眠/ jpa大選擇
比方說,我有100K用戶。我已經使用Ehcache成功實現了二級緩存,以提高性能並驗證它正在工作。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-cache
我知道它在您調用load方法時可以工作(即,您從緩存中加載對象而不是調用sql查詢)。我通過在休眠級別進行日誌記錄驗證了這一點,並驗證了它更快。
但是,我實際上想要選擇所有用戶的子集......例如,假設我想要計算有多少個超級用戶。
此外,我的用戶有一個關聯的ZipCode對象... ZipCode對象也是二級緩存...我想要做的是實際上能夠詢問像......有多少個超級用戶我在紐約州...
但是,我的問題是...我如何寫一個查詢來做到這一點,將達到二級緩存,而不是數據庫。請注意,我的第二級緩存被配置爲可讀/寫...因此,當新用戶被添加到系統中時,他們應該被自動添加到緩存中......還有......請注意,我已經簡要地調查了Query緩存,但是我不確定這適用於多次運行的查詢......我的問題更多的是......數據應該在二級緩存中,所以我必須做些什麼以便當我編寫我的查詢時數據庫不會被擊中。
歡呼聲, 布賴恩
嗨帕斯卡,你似乎是休眠/ jpa大師:)謝謝你回答我的問題。不幸的是我使用JPA 1.0,所以我想知道是否有任何方法在javax.persistence.Query https://glassfish.dev.java.net/nonav/javaee5/api/index.html?javax/persistence/package -summary.html調用相同的東西?再次感謝。 Brian – Brian 2010-11-10 15:55:35
@Brian事實上,我建議在這裏使用Hibernate的'Query',JPA沒有與我所建議的相同的東西。 – 2010-11-10 16:03:24
感謝那個帕斯卡。出於興趣,是否還有其他替代方法,或者這是您唯一知道的方法?非常感謝你的幫助。 – Brian 2010-11-10 16:14:49