1. 程式人生 > >hibernate的查詢快取

hibernate的查詢快取

     查詢快取的配置和使用也是很簡單的:
         1>查詢快取的啟用不但要在配置檔案中進行配置
             <property name="hibernate.cache.use_query_cache">true</property>
         2>還要在程式中顯示的進行啟用
             query.setCacheable(true);

1>查詢快取的啟用不但要在配置檔案中進行配置 -------換成spring配置
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/WEB-INF/config/jdbc.properties</value>
            </list>
        </property>
    </bean>
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="autoCommitOnClose" value="true"/>
        <property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/>
        <property name="initialPoolSize" value="${cpool.minPoolSize}"/>
        <property name="minPoolSize" value="${cpool.minPoolSize}"/>
        <property name="maxPoolSize" value="${cpool.maxPoolSize}"/>
        <property name="maxIdleTime" value="${cpool.maxIdleTime}"/>
        <property name="acquireIncrement" value="${cpool.acquireIncrement}"/>
        <property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/>
    </bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>    
        <property name="mappingLocations">
            <list>
                <value>classpath*:/com/jeecms/core/entity/hbm/*.hbm.xml</value>
                <value>classpath*:/com/jeecms/cms/entity/main/hbm/*.hbm.xml</value>
                <value>classpath*:/com/jeecms/cms/entity/assist/hbm/*.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
            hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
            hibernate.show_sql=false
            hibernate.format_sql=false
            hibernate.query.substitutions=true 1, false 0
            hibernate.jdbc.batch_size=20
            //查詢快取配置
            hibernate.cache.use_query_cache=true
            </value>
        </property>
        <property name="entityInterceptor">   
            <ref local="treeInterceptor"/>
        </property>
        <property name="cacheProvider">
            <ref local="cacheProvider"/>
        </property>
        <property name="lobHandler">
            <ref bean="lobHandler" />
        </property>
    </bean>

2>還要在程式中顯示的進行啟用
public List<CmsSite> getList(boolean cacheable) {
        String hql = "from CmsSite bean order by bean.id asc";
        return getSession().createQuery(hql).setCacheable(cacheable).list();
    }

相關推薦

Hibernate查詢快取全面分析

這裡介紹Hibernate查詢快取對Iterator不起作用,只對List起作用。 快取分類: ◆一級快取 Session級 ◆二級快取 SessionFactory級別,JVM級別 ◆Hibernate查詢快取不固定(生命週期不固定) 生命週期: ◆一級快取 是和 ses

Hibernate查詢快取

As mentioned above, most queries do not benefit from caching or their results. So by default, individual queries are not cached even after enabling query

Hibernate 二級快取查詢快取

一級快取:     1,在session上面有一個一級快取;一級快取的生命週期和session相同,一級快取最大生命週期就是一個執行緒;在web環境下面,session的最大生命週期就是一次請求;     2,一級快取可以用來幹嘛? &nb

Hibernate的一級快取、二級快取查詢快取

Hibernate的Session提供了一級快取的功能,預設總是有效的,當應用程式儲存持久化實體、修改持久化實體時,Session並不會立即把這種改變提交到資料庫,而是快取在當前的Session中,除非顯示呼叫了Session的flush()方法或通過close()方法關閉Sessi

談一談Hibernate的一級快取、二級快取查詢快取

Hibernate的Session提供了一級快取的功能,預設總是有效的,當應用程式儲存持久化實體、修改持久化實體時,Session並不會立即把這種改變提交到資料庫,而是快取在當前的Session中,除非顯示呼叫了Session的flush()方法或通過close

Hibernate查詢問題 如何不使用快取 簡單方法

如果 使用HIbernate迴圈查詢某個表的話。他會使用快取技術,來提高資料庫效能。 其思路是:第一次執行某個sql語句,記錄下他的引數。第二次執行某個sql語句時候首先拿他的引數表和預設記錄的引數表相比較,如果引數表一致,那麼hibernate不會重新查詢資料庫,而是從快取

hibernate 二級快取查詢快取原理和關係

一、hibernate的二級快取 如果開啟了二級快取,hibernate在執行任何一次查詢的之後,都會把得到的結果集放到快取中,快取結構可以看作是一個hash table,key是資料庫記錄的id,value是id對應的pojo物件。當用戶根據id查詢物件的時候(load、iterator方法),會首先在

hibernate:真正理解二級快取查詢快取

public class Person { private Person parent; private Set<Person> children; public void setParent(Person p) { parent = p; } public void setChild

SSH框架之Hibernate的集合快取查詢快取、專案中的session管理方式

一、集合快取 1、不使用集合快取: 2、使用集合快取: 1)配置hibernate.cfg.xml 2)測試: 二、補充二級快取、集合快取配置 三、查詢快取 list()

效能優化(一)Hibernate 利用快取(一級、二級、查詢)提高系統性能

      在hibernate中我們最常用的有三類快取,分別為一級快取、二級快取和查詢快取,下面我們對這三個快取在專案中的使用以及優缺點分析一下。       快取它的作用在於提高效能系統性能,介於應用系統與資料庫之間而存在於記憶體或磁碟上的資料。       我們程式設

Hibernate快取體系之查詢快取(query cache),以及list和iterate方法的區別

       Hibernate框架提供了Session.load()和Session.get()方法,用來根據實體物件的主鍵值從資料庫中查詢對應記錄。針對load和get方法,hibernate提供了一級快取和二級快取的支援,提高查詢效率,具體可以參考我的部落格:通過測試

hibernate查詢快取

     查詢快取的配置和使用也是很簡單的:          1>查詢快取的啟用不但要在配置檔案中進行配置              <property name="hibernate.cache.use_query_cache">true</property>        

hibernate查詢快取使用方法詳解

<hibernate-configuration>    <session-factory>      <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:ORCL10<

hibernate快取之【查詢快取

        說到hibernate中的快取我們瞭解的比較多的是一級和二級快取,通過前面兩篇部落格的總結我們知道一級和二級快取主要是快取查詢的實體或實體集的,那麼如果我們是通過HQL或SQL語句查詢

Hibernate框架之查詢快取

一級快取跟二級快取都只能快取實體物件, 而查詢快取可以快取基本屬性, 同時查詢快取也可以快取實體物件, 但是隻能快取其id 查詢快取的生命週期是: 一旦資料庫表的資料發生修改, 則查詢快取則被清掉了 直接使用Hibernate框架提供的查詢快取即可 第一步: 開啟查詢快

hibernate--一級和二級快取(使用Ehcache)以及查詢快取

有一下幾點需要理清才行: 一級快取是session快取 session關閉就小時 二級快取是sessionFactory級別的快取 一個應用程式只有一個 多個執行緒共享  不要把經常修改的物件放到二級快取中 二級快取中放一些查詢的物件 1 首先是在hibernate,cfg

hibernate二級快取查詢快取之間的關係

我們先看一下什麼樣的hibernate操作會將資料存入到一級快取中去,當呼叫下邊這些方法的時候會將資料存入到一級快取中 一級快取 save、update、saveOrupdate、load、list、iterate、lock,例如: User userOne=new Use

Hibernate快取原理與查詢快取的組合探究

來源:http://www.javaeye.com/topic/431603 0.前言          由於對Hibernate的二級快取和查詢快取的區別不瞭解,也不知道它們起什麼作用。於是動手做了一些實驗,對它們的組合使用有了一個表面的認識。 1.前提      

Hibernate二級快取查詢快取

二級快取: 1. jar包兩個 commons-logging.jar ehcache-1.2.3.jar 2. 總配置檔案 <property name="hibernate.

Hibernate 一級快取 二級快取 1+N問題 查詢快取

在本篇隨筆裡將會分析一下hibernate的快取機制,包括一級快取(session級別)、二級快取(sessionFactory級別)以及查詢快取,當然還要討論下我們的N+1的問題。 隨筆雖長,但我相信看完的朋友絕對能對hibernate的 N+1問題以及快取有更深的瞭