1. 程式人生 > >hibernate-memcached--在Hibernate中使用Memcached作為一個二級分散式快取

hibernate-memcached--在Hibernate中使用Memcached作為一個二級分散式快取

官方網址: http://code.google.com/p/hibernate-memcached/
目前最新版本為1.0, 支援Hibernate3.3.

下面是具體的使用方法:
hibernate-memcached需要支援的類庫如下:

配置方法如下:

配置Hibernate使用cache提供類

hibernate.cache.provider_class com.googlecode.hibernate.memcached.MemcachedCacheProvider

hibernate.cache.use_query_cache true

其它一些引數設定說明:
Property Default Description
hibernate.memcached.servers localhost:11211 memcached 服務地址,多個用空格分隔
格式host:port 
hibernate.memcached.cacheTimeSeconds 300 快取失效時間,單位秒
hibernate.memcached.keyStrategy HashCodeKeyStrategy 快取Key生成儲存HashCode演算法
hibernate.memcached.readBufferSize DefaultConnectionFactory.DEFAULT_READ_BUFFER_SIZE 從伺服器讀取資料快取區大小
hibernate.memcached.operationQueueLength DefaultConnectionFactory.DEFAULT_OP_QUEUE_LEN Maximum length of the operation queue returned by this connection factory
hibernate.memcached.operationTimeout DefaultConnectionFactory.DEFAULT_OPERATION_TIMEOUT 操作超時時間設定
hibernate.memcached.hashAlgorithm HashAlgorithm.KETAMA_HASH 新增快取資料到伺服器時使用的Hash雜湊演算法。 當 hibernate-memcached 設定成 KETAMA_HASH演算法時,注意:預設客戶端API使用的是 HashAlgorithm.NATIVE_HASH
hibernate.memcached.clearSupported false 支援MemcachedCache.clear()方法清空快取。
建議不要開啟。

配置示例(本文以Hibernate3.3-entitymanager為例)
配置 persistence.xml檔案
<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence"" target="_new">http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

<persistence-unit name="entityManager" transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><jta-data-source>java:comp/env/jdbc/qualitydb</jta-data-source><properties><property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/><property name="hibernate.max_fetch_depth" value="3"/><property name="hibernate.show_sql" value="true"/><property name="hibernate.cache.region_prefix" value="quality.cache.ehcache"/><property name="hibernate.cache.use_second_level_cache" value="true"/><property name="hibernate.cache.use_structured_entries" value="true"/><property name="hibernate.cache.use_query_cache" value="true"/><property name="hibernate.cache.provider_class" value="com.googlecode.hibernate.memcached.MemcachedCacheProvider"/><property name="hibernate.memcached.servers" value="localhost:11211"/></properties></persistence-unit></persistence>

啟動後,提示如下:
2008-08-28 17:10:08,312 JCLLoggerAdapter.java265 INFO -- Starting MemcachedClient...
2008-08-28 17:10:08.718 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2008-08-28 17:10:08.750 INFO net.spy.memcached.MemcachedConnection: Connection state changed for [email protected]

表示我們第一步配置已經成功了,接下來,對需要進行快取的Entity進行配置
 1 @Entity
 2 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)//設定要求快取 3 publicclass Student {
 4  5   @Id
 6   @Column(length=32)
 7 private String id;
 8  9     @Column(length=20)
10 private string name;
11 12     @OneToMany
13     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
14 private Set<Book> books;
15 16 }

Ok,現在配置已經完成。

Good Luck!

Yours Matthew!

相關配置:

 <!--開啟二級快取-->
 <property name="hibernate.cache.use_second_level_cache">
  true
 </property>
 <!--設定快取提供者 -->
 <property name="hibernate.cache.provider_class">
  com.googlecode.hibernate.memcached.MemcachedCacheProvider
 </property>
 <!-- 設定memcached快取伺服器的埠 -->
 <property name="hibernate.memcached.servers">
  192.168.11.37:11211 192.168.11.37:11212
 </property>
 <!--設定二級快取的字首名稱 -->
 <property name="hibernate.cache.region_prefix">
  quality.cache.ehcache
 </property>
 <!--是否使用結構化的方式快取物件 -->
 <property name="hibernate.cache.use_structured_entries">
  true
 </property>
 <!--是否快取查詢結果 -->
 <property name="hibernate.cache.use_query_cache">true</property>


相關推薦

hibernate-memcached--在Hibernate使用Memcached作為一個二級分散式快取

官方網址: http://code.google.com/p/hibernate-memcached/目前最新版本為1.0, 支援Hibernate3.3.下面是具體的使用方法:hibernate-memcached需要支援的類庫如下:配置方法如下:配置Hibernate使

ASP.NET Core與Redis搭建一個簡易分散式快取

​本文主要介紹了快取的概念,以及如何在伺服器記憶體中儲存內容。今天的目標是利用IDistributedCache來做一些分散式快取,這樣我們就可以橫向擴充套件我們的web應用程式。 在本教程中,我將使用Redis作為快取。Redis是一個可靠的快速記憶體快取,可以儲存多種型別的物件。Redis正在被Twitt

memcached分散式快取hibernate結合-- Hibernate+ehcache二級快取技術

Memcached是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。Memcached 的快取是一種分散式的,可以讓不同主機上的多個使用者同時訪問, 因此解決了共享記憶體只能單機應用的侷限,更

新的Hibernate 4版本,對於Hql的一個改變

在新的Hibernate 4版本中,對於Hql有一點點改變,如果你還是按照以前的方式去編寫HQL並且用了以下佔位符的方式,就會得到一個警告。 參考資料:https://hibernate.atlassian.net/browse/HHH-8012?page=com.atlassian.jira.p

作為一個新手,最近學習Hibernate執行出現java.lang.UnsupportedClassVersionError: org/hibernate/cfg/Configuration

錯誤如下: java.lang.UnsupportedClassVersionError: org/hibernate/cfg/Configuration : Unsupported major.minorv 百度了很多說要把Hibernate的版本換低一點,但又看到

memcached分散式快取hibernate結合

先了解一下什麼是memcached Memcached是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。Memcached 的快取是一種分散式的,可以讓不同主機上的多個使用者同時訪問, 因此解決

Hibernatein查詢一個問題傳多個引數

</pre><pre name="code" class="java"> public List<UnitGroup> getUnitGroupByUnitId(Integer unitId,String productId) thro

10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num。例如123放在num[0],456放在num[1]……統計共有多少個整數,並輸出這些數。

tab lnp zip sm2 cuc ycm rds qt5 tft 10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例

HibernateHibernate使用延遲加載應該註意的事項

取出 struts2 dial 表示 指定 cef init pen ima 1,簡介 在使用一些查詢方法時,方法執行了,但是並沒有立刻發送SQL語句查詢數據庫。而是在訪問對象的getXxx方法時候才觸發SQL執行加載對象數據。這種機制就稱為延遲加載。 2,優點 延

Mcrouter-基於Memcached協議的緩存層流量管理工具(Memcached集群的另一個選擇)(轉)

cache 代碼 自動 open 句柄 不同 github tex key Mcrouter 是一個基於Memcached協議的路由器,它是 Facebook緩存架構的核心組件,在峰值的時候,它能夠處理每秒50億次的請求。近日,Facebook開放了Mcrouter的源代碼

hibernate在Oracle插入數據,默認字段被設置為null的問題解決

insert語句 span blog 數據庫 添加 *** .cn gpo ber 參考內容: http://blog.sina.cn/dpool/blog/s/blog_90629d5301014a5w.html 在數據庫中一個字段的默認值為1,但是在插入數據後,本來該字

在URL使用另一個url作為參數時會被`&`截斷的問題

轉換 blog value AD -a result too isset 工具 在URL中使用另一個url作為參數時會被&截斷的問題 下午幫同事寫一個url轉二維碼的小工具時,發生標題中描述的問題。比如:輸入的url是http://www.example.dev/n

Hibernate的配置,c3p0連接池相關配置

ant 文檔 type artifact -- after per customer 重復 一、配置c3p0 1、導入 hibernate-c3po連接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/

hibernateHibernateget()和load()的區別

etime () bsp ava fin null void 自己 IT Hibernate中根據Id單條查詢獲取對象的方式有兩種,分別是get()和load(),來看一下這兩種方式的區別。 1. get() 使用get()來根據ID進行單條查詢: 1

LAMP架構Memcached緩存應用

包括 dev 負載 man username 整型 upd 51cto cal 什麽是Memcached ? Memcached是一套分布式內存對象緩存系統,用於在動態系統中減少數據庫負載,進而提升系統性能。Memcache多數情況是作為數據庫的前端Cache來使用,因為

oracle,將兩上select語句的結果作為一個整體顯示出來

1、union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序。 2、union all 對兩個結果集進行並操作,包括重複行,不進行排序。 3、intersect 對兩個結果集進行交集操作,不包括重複行,同是進行預設規則的排序。 4、minus 對兩個結果

SDK.a包過大,單獨作為一個項目,功能項目引入SDK項目文檔 及Search Paths相關參數說明

選中 none 打開 目的 每次 創建文件 sdk shu com SDK包過大,單獨作為一個項目 項目中使用第三方的SDK包(例如所有的.a文件1G多),導致項目整體過大,這個時候就可以把第三方的.a文件單獨作為一個項目。 每次自動化打包都要從git拉去項目,不用每次都拉

hibernate 對映檔案id 及id Generator的詳解

   所有的生成器都實現了org.hibernate.id.IdentifierGenerator介面。這是一個非常簡單的介面;某些應用程式可以選擇提供他們自己特定的實現。當然,Hibernate提供了很多內建的實現。下面是一些內建生成器的快捷名字: increment

Hibernate在MyEclipse的部署,連線MySQL資料庫

如今,更多的人使用MyEclipse而不再使用eclipse,MyEclipse比eclipse的方便之處我就不說了,但MyEclipse不是免費的,我也是使用破解版的。 在MyEclipse中如何搭建hibernate環境呢?今天學習一點點想與

Hibernate學習(一)———— 第一個hibernate工程

一、什麼是Hibernate?       輕量級JavaEE應用的持久層框架,是一個完全的ORM框架。(說完這句話,肯定有很多人懵圈了,下面我來一個個解釋)           持久化:將我們想要儲存的資料儲存到硬碟上,也就是我們電腦的磁碟上,為什麼叫持久化呢,就是資料能夠儲存的很久,所以叫持久化,現在