seq搜索引擎优化至少包括那几步?(引出hibernate的第二级缓存,为什么还要有二级缓存,如何配置Hibernate的二级缓存)
优采云 发布时间: 2021-11-28 02:01seq搜索引擎优化至少包括那几步?(引出hibernate的第二级缓存,为什么还要有二级缓存,如何配置Hibernate的二级缓存)
按照以下思路回答:(1)首先解释清楚什么是缓存,(2)另外,用hibernate Session是一级缓存,也就是用一级缓存,为什么有没有二级缓存?,(3)最后说一下如何配置Hibernate的二级缓存。
(1)Cache就是把之前从数据库中查询到使用过的对象存储在内存中(一种数据结构)。这个数据结构通常或者类似于Hashmap。当一个对象以后要使用的时候,首先Query缓存中是否有这个对象,如果有,则使用缓存中的对象,如果没有,则查询数据库,将查询到的对象保存在缓存中以备下次使用。以下是缓存的伪代码:
介绍hibernate的二级缓存,使用如下伪代码分析Cache的实现原理
道
{
hashmap map = newmap();
用户 getUser(整数)
{
用户 user =map.get(id)
如果(用户==空)
{
用户 = session.get(id);
map.put(id,user);
}
返回用户;
}
}
道
{
缓存缓存 = 空
设置缓存(缓存缓存)
{
this.cache = 缓存
}
用户 getUser(int id)
{
如果(缓存!=空)
{
Useruser = cache.get(id);
如果(用户==空)
{
用户 = session.get(id);
cache.put(id,user);
}
返回用户;
}
returnsession.get(id);
}
}
Hibernate的Session级缓存的缓存功能不明显,应用价值不大。Hibernate的二级缓存是为Hibernate配置一个全局缓存,允许多个线程和多个All事务可以共享这个缓存。我们希望一个人用过,其他人也可以用。会话没有这样的效果。
(3)二级缓存是独立于Hibernate的软件组件,属于第三方产品。很多厂商和组织都提供缓存产品,比如EHCache和OSCache。在Hibernate中使用二级缓存,首先在hibernate.cfg.xml配置文件中配置使用哪个厂商的缓存产品,然后配置缓存产品自己的配置文件,最后配置Hibernate中哪些实体对象应该收录在二级缓存的管理中。二级缓存的原理,有了这个思路,Hibernate二级缓存的配置就很简单了 扩展知识:一个SessionFactory可以关联一个二级缓存,即一个二级缓存只能负责在数据库中缓存数据,使用Hibernate的二级缓存时,注意不要让其他应用程序或SessionFactory改变当前数据库中的数据,以免缓存的数据与数据库中的实际数据不一致。