2012-01-16 97 views
0

我有一個bean,每次發出請求時都會調用getSession().createCriteria(ObjClass.class).list();。第一次加載所有東西需要16秒,然後需要1秒左右。事情是在一個單元測試緩存中工作的很好,但是當一個bean發出多個請求時,它甚至從不使用緩存。問題是爲什麼?休眠緩存不能用於RichFaces bean

相關信息:這是一個二級hibernate(3.5.x)緩存(2.0),其中org.hibernate.cache.HashtableCacheProvider和查詢級別緩存使用情況已打開。使用richfaces 3.3.3請求啓用保持活動狀態的bean。

回答

0

如果不進行查詢可緩存,它不會被緩存:

getSession().createCriteria(ObjClass.class) 
      .setCacheable(true) 
      .list(); 

你也可以設置緩存區域進行更細粒度的配置。

+0

我不會在測試中使查詢可以緩存,並且測試使用與bean相同的DAO。 – 2012-01-16 16:00:04

+0

沒有幫助,它花了16秒之前,現在它需要17個第一次,並減少到16個。 – 2012-01-17 10:53:47

+0

ObjClass類是否可緩存?你看過生成的SQL查詢嗎? – 2012-01-17 10:58:04