2011-12-20 73 views
2

設置多個Java應用程序共享一個通用實體模塊(實體類+ Hibernate XML映射)。目前,實體未啓用緩存(映射內沒有<cache.../>元素)。使用一個Hibernate映射的多個二級緩存設置

大多數應用程序都是編輯單個實體的過程,因此它無法緩解二級緩存。現在

,新的應用程序實現其

  1. 應該使用相同的實體映射
  2. 但必須使用二級和查詢緩存。

如何配置緩存?

一些觀察:

  1. 我不能添加<cache.../>元素的映射,因爲這樣會破壞不配置這樣的緩存,哪些不是我的影響下,其他應用:

    Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

  2. 我找不到一種方法來激活一個實體進行緩存之外的映射。在ehcache.xml實體沒有幫助
  3. 即使我可以改變所有其他應用程序,並添加<cache.../>到實體映射設置緩存區,這是行不通的設置hibernate.cache.use_second_level_cache=false雖然是這麼說的禁用緩存http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html,表3.5

回答

1

看起來你可以使用<class-cache>元素在hibernate.cfg.xml,而不是在實體的映射配置緩存,見3.8. XML configuration file

我想你可以負擔得起創建一個自定義hibernate.cfg.xml將使用現有的映射,如果沒有,也有Configuration.setCacheConcurrencyStrategy()方法,可能也有幫助。

+0

謝謝,一定是盲目的,但我真的試圖找到這樣的配置選項。 對於那些喜歡編程式彈簧配置的人來說, 'LocalSessionFactoryBean',對應的方法是'setEntityCacheStrategies(Properties entityCacheStrategies)' http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/LocalSessionFactoryBean.html# setEntityCacheStrategies(java.util.Properties) – rainer198

相關問題