hibernate二級緩存

參考文章:http://blog.csdn.net/wtz20110803/article/details/7297579數據庫

緩存類型:類,集合 和 查詢的緩存:緩存

1.一級緩存的主要做用不是用來提升性能,而是用來管理對象session

2.其中對象變化了能夠更新到數據庫中性能

3.一次會話級別的成爲一級緩存,應用程序級別(sessionfactory級別)的成爲二級緩存.net

4.二級緩存默認是不開啓的對象

5.用集合緩存的話類的緩存也必需要打開,由於集合緩存中存的是每一項的ID,若是沒有類的blog

  緩存,則下次查詢的時候因爲二級緩存中沒有此類,他會根據ID去數據庫中查詢,效率降低get

  所以將類緩存,才能到二級緩存區中根據ID查找出來it

6.不論一級仍是二級緩存,都是在使用OID的方式獲取對象時纔有效,例如get或load方法io

7.HQL查詢中,對於query.list()默認不會使用緩存,即便寫成where id=1也不會,但會放入緩存之中

8.在使用HQL查詢時,若是採用iterate()方法查詢,則會使用緩存

  由於這個方法是先查詢全部符合條件的ID集合,再一個一個的按照ID查找數據,就可以使用緩存了

  可是其有N+1次查詢的問題,提高性能有限

9.查詢緩存(此時將條件做爲key緩存存儲起來,若條件改變則緩存無效):

  使用查詢緩存session.createQuery("XXX")  .setCacheable(true)  .list();

  主映射文件中的配置:

  <property name="cache_use_query_cache">true</property>

  使用時query查詢時,setCacheable設置TRUE;

相關文章
相關標籤/搜索