Hibernate——缓存+如何配置二级缓存

一、什么是缓存



       一般来说,我们每次访问的数据是从数据库中查出来的,但是会有这样的情况,多个用户会对一张表进行反复的访问和操作,这样每次都去从数据库中查询相同的数据,很大程度上降低了效率,为了避免这种情况发生,出现了缓存,缓存就是把以前从数据库查询出来和使用过的对象保存在内存中,这个数据结构通常是类似HashMap,当以后使用某个对象的时候,先查询缓存中是或否有这个对象,如果有则使用缓存中的对象,如果没有,则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。



二、一级缓存和二级缓存



      一般来说,我们将从数据库取出的数据存储到session中,每个session,对同一个id进行两次load,不会发送给sql数据库,但是session关闭的时候,一级缓存就失效了。二级缓就是全局缓存。


      缓存可以简单看出一个map,通过key在缓存里找value。



引用代码,分析cache的实现原理



<span style="font-family:KaiTi_GB2312;font-size:18px;">Dao

{

hashmap map = new map();

User getUser(integer id)

{

User user = map.get(id)

if(user == null)

{

user = session.get(id);

map.put(id,user);

}

return user;

}

}

 

Dao

{

Cache cache = null

setCache(Cache cache)

{

this.cache = cache

}

 

User getUser(int id)

{

if(cache!=null)

{

User user = cache.get(id);

if(user ==null)

{

user = session.get(id);

cache.put(id,user);

}

return user;

}

 

return session.get(id);

}

}
</span>


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值