Hibernate 二級緩存 失效問題!!!

問題解決了。。。。
原來使用了SQLQuery 然後執行了 executeUpdate();
就是executeUpdate會把所有的緩存都清除。。。
 ============
 而且一定要記住,要麼在代碼中使用 this.getHibernateTemplate().setCacheQueries(true);
要麼就在配置文件中加上
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="cacheQueries" value="true"></property>
</bean>

很容易漏掉的東西 自己給自己提個醒

====================

有一個解決方案就是,直接修改源代碼中的東西,把修改的那一行給註釋掉。
修改原因:hibernate3 在 對sql 語句的excuteUpdate()調用時候,會清空相關實體的二級緩存,但是有些時候我們並不需要清空二級緩存,
所以註釋掉 NativeSQLQueryPlan.java 中的 coordinateSharedCacheCleanup( session ),如果想要對sql 語句 的 executeUpdate() 同時清空相應實體的二級緩存
,可以手動調用getSessionFactory().evict(class1) 。

SybaseDialect.java,Sybase11Dialect.java

修改原因:hibernate 在針對sybase數據庫分頁查詢的時候沒有真正實現在數據庫端的分頁處理, 所以修改了Sybase11Dialect .java 和 SybaseDialect .java 文件
修復了 分頁查詢中數據量過大時內存溢出的問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章