項(xiàng)目中需要實(shí)現(xiàn)一個功能,定時查詢FTP服務(wù)器某個目錄下的文件,并及時下載至本機(jī),同時不能消耗太多系統(tǒng)資源。
最后實(shí)現(xiàn)是使用ehcache,將文件路徑和文件大小緩存,如果前后兩次無變化,則忽略。如果同一路徑大小有變化,則下載此文件。
當(dāng)然,由于緩存的不可靠近,如果數(shù)據(jù)庫可以支持,可以將數(shù)據(jù)寫入表中,對數(shù)值進(jìn)行標(biāo)記。這樣更加可靠。
以下是ehcache的簡單應(yīng)用。
1、下載ehcache的相關(guān)jar文件并放置到Java Web工程的WebRoot/WEB-INF/lib目錄下;
SSH架構(gòu)下ehcache緩存模塊的配置使用
2、編輯JPA配置文件 persistence.xml:
<
property
name
=
"hibernate.cache.provider_class"
value=
"net.sf.ehcache.hibernate.SingletonEhCacheProvider"
/>
<
property
name
=
"hibernate.cache.use_query_cache"
value=
"true"
/>
<
property
name
=
"hibernate.cache.use_second_level_cache"
value=
"true"
/>
3、將ehcache的配置文件ehcache.xml放置在Java Web工程的src目錄下,并根據(jù)自身需要進(jìn)行類似如下的配置:
<
cache
name
=
"edu.bupt.laaip.model.Question"
maxElementsInMemory
=
"500"
eternal
=
"false"
timeToIdleSeconds
=
"1800"
timeToLiveSeconds
=
"3600"
overflowToDisk
=
"false"
/>
4、在你想要添加緩存的JPA實(shí)體類上添加標(biāo)簽如下:
package
edu.bupt.laaip.model;
import
java.io.Serializable;
import
java.util.Date;
import
javax.persistence.*;
import
org.hibernate.annotations.Cache;
import
org.hibernate.annotations.CacheConcurrencyStrategy;
@Cache
(usage = CacheConcurrencyStrategy.READ_WRITE)
@Entity
public
class
Question
implements
Serializable
{
……
}
5、在執(zhí)行查詢的query語句上設(shè)置cacheable屬性,以便將查詢結(jié)果存入緩存:
@SuppressWarnings
(
"unchecked"
)
@Override
public
List
getAll
() {
// TODO Auto-generated method stub
Query query = getEntityManager().createQuery(
"select q FROM Question q"
);
query.setHint(
"org.hibernate.cacheable"
,
true
);
return
query.getResultList();
}
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
