1. 程式人生 > >hibernate,hql與sql的快取使用

hibernate,hql與sql的快取使用

getSessionFactory().evictQueries(); //清除快取 

1.在hibernate中createQuery執行hql查詢的時候使用查詢快取:

  1. getSession().createQuery(hql).setCacheable(true).setCacheRegion("user").list(); 

2.在hibernate中createSQLQuery執行sql時使用查詢快取:

  1. getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(User.class)).setCacheable(true).setCacheRegion("user").list(); 

這樣會報錯,原因是That's because the aim of the second level cache is to (ultimately) cache entities that Hib knows about. I haven't verified this but I'm not surprised that caching sql query doesn't work as those are not (directly) translated by hibernate into entities.

解決方法:

It's solutioned adding column's types to the query, using the method "addScalar()"

like this:

  1. getSession().createSQLQuery(sql).addScalar("id", IntegerType.INSTANCE) 
  2. .addScalar("name",StringType.INSTANCE) 
  3. .addScalar("age",IntegerType.INSTANCE).setResultTransformer(Transformers.aliasToBean(User.class)) 
  4. .setCacheable(true).setCacheRegion("user").list(); 

相關推薦

hibernate,hqlsql快取使用

getSessionFactory().evictQueries(); //清除快取  1.在hibernate中createQuery執行hql查詢的時候使用查詢快取: getSession().createQuery(hql).setCacheable(true).

Hibernate學習之hql sql hql 語法詳解

Hibernate中查詢:     createQuery( String qlString)使用的是HQL語句;     createNativeQuery (String sqlString)使用的是SQL語句;   關係HQL與SQL區別:    hql 語法詳解:   

Hibernate學習之hql sql

create 特性 sql 查詢 形勢 rom order delete 編程人員 Hibernate中查詢:     createQuery( String qlString)使用的是HQL語句;     createNativeQuery (String sqlStri

hibernate中相關問題hqlsql的不同實現方式

如果我們想要的結果是某個物件的實體,這是就可以通過addEntity()方法來實現。addEntity()方法可以講結果轉換為實體。但是在轉換的過程中要注意幾個問題:           1、查詢返回的是某個資料表的全部資料列           2、該資料表有對應的持久化類對映  vo類都不行    

HQLSQL的區別

面試官:HQL vs SQL 答:HQL 查詢語句是面向物件的, Hibernate 負責解析 HQL 查詢語句, 然後根據物件-關係對映檔案中的對映資訊, 把 HQL 查詢語句翻譯成相應的 SQL 語句。HQL 查詢語句中的主體是域模型中的類及類的屬性。 SQL 查詢語

hibernate的save方法sql的insert的區別

foreign try cat values key update out onf nat public boolean addDiscuss(Discuss discuss) {// Session session = HibernateSessionFactory.g

hql語言的使用及sql語言的區別

1. 什麼是hql    HQL是Hibernate Query Language的縮寫    查全部 2. hql和sql區別/異同    HQL            

Hibernate 髒資料檢查機制資料快取

一. 髒資料檢查機制 髒資料:   髒資料並非廢棄或者無用的資料,而是指一個數據物件所攜帶的資訊發生了改變之後的狀態.            如果我們從資料庫中讀取一個物件

Hibernate一級快取二級快取的區別

一級快取:   就是Session級別的快取。一個Session做了一個查詢操作,它會把這個操作的結果放在一級快取中。   如果短時間內這個session(一定要同一個session)又做了同一個操作,那麼hibernate直接從一級快取中拿,而不會再去連資料庫,取資料。

hibernate中的三級快取載入

首先說JCS; JCS:指的是java cache system JCS中是依據物件中的唯一標示進行儲存 儲存結構為map結構 為什麼要說JCS呢,因為hibernate的快取二級快取與JCS密切相關, 1.什麼是三級快取呢?         一級快取:指的是Session

hibernate的一級快取二級快取的區別

快取是介於應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。   快取的介質一般

HibernateMybatis的區別、Hibernate一級快取二級快取之間的區別

Hibernate對資料庫提供了較為完整的封裝,不需要手寫SQL語句,自動生成、自動執行,持久層框架,開源的物件關係對映,對JDBC的進一步封裝。 Mybatis著力點在於JAVA物件與SQL之間的對映關係,需要編寫sql語句,半自動,需要注意的細節更多,但是

Hibernate學習筆記】Session清空快取清理快取

1. 清空快取     當呼叫session.evict(customer); 或者session.clear(); 或者session.close()方法時,Session的快取被清空。 2. 清理快取     Session具有一個快取,位於快取中的物件處於持久化狀態

hibernate基礎(三)——主鍵生成策略flush快取清理

在瞭解此文前,請首先閱讀: 在使用hibernate時,我們還是很有必要將hibernate的內部實現原理來搞清楚一下的。比如,hibernate在儲存一個物件時, 它的

Java程式設計師從笨鳥到菜鳥之(六十四)細談Hibernate(十五)HQLQBC查詢方式詳解

歡迎關注微信賬號:java那些事:csh624366188.每天一篇java相關的文章 java交流工作群1: 77800592(已滿) java交流學生群2:234897635(已滿) java交流工作群3:94507287 java交流工作群4: 272265434 我的郵箱:

hibernate--HQL語法詳細解釋

原文地址  http://blog.csdn.net/zjkstone/article/details/7884875 HQL查詢: Criteria查詢對查詢條件進行了面向物件封裝,符合程式設計人員的思維方式,不過HQL(Hibernate Query Lanagu

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

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

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

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

Hibernate三種資料操作方式HQL-Criteria-Sql

以最基本的查詢來說,如果您想要查詢某個物件所對應的資料表中所有的內容,您可以如下進行查詢:Criteria criteria = session.createCriteria(User.class);List users = criteria.list();for(Iterator it = users.it

Hibernate 的查詢語言 HQL 高階查詢

import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; import or