0
我在我的實體上有一個主鍵(整數),但我也在這些實體上有一個UUID,我在這些實體上進行大量搜索。我想知道是否有可能使該UUID成爲關鍵,以便Hibernate(或其他)不必每次都從數據庫獲取實體,但可以首先檢查其緩存嗎?實體上的多個@Id字段/鍵
我在我的實體上有一個主鍵(整數),但我也在這些實體上有一個UUID,我在這些實體上進行大量搜索。我想知道是否有可能使該UUID成爲關鍵,以便Hibernate(或其他)不必每次都從數據庫獲取實體,但可以首先檢查其緩存嗎?實體上的多個@Id字段/鍵
我不確定Hibernate。但是,如果您在2.4版本中使用EclipseLink,則支持非ID字段上的緩存索引。然後使用UUID的任何查詢都將能夠獲得緩存命中。
見, http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching/Indexes
這太好了。不幸的是,似乎冬眠沒有這個:/ –
休眠有兩種不同類型的高速緩存,其可以是有益的。 L2(共享)緩存(由@Id鍵入)和查詢緩存,它將緩存按值查找操作的查詢結果。聽起來這兩個人一起工作可能會給你想要的東西。 – wrschneider
啊,這就對了。有什麼方法預先填充L2緩存嗎?讓我們說,如果所有的實體都被一個select查詢獲取,然後使用它們的uuid一個接一個地獲取 - 我想消除那些一個一個的提取。 –
你可能會春天嗎?或者你會考慮使用它嗎?因爲Spring不像Hibernate那樣通過主鍵來提供緩存機制,而是通過任何值提供緩存機制,所以你可以在這裏指定你的UUID。 你也可以在Hibernate中實現自己的緩存機制,但這是重新發明輪子。 – JMelnik