栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Hibernate + Spring缓存-一些问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Hibernate + Spring缓存-一些问题

Hibernate支持以下缓存:1级缓存,2级缓存,查询缓存

是。

Spring本身支持以下缓存可能性:仅方法缓存

Spring 3.1引入了基于方法周围注释的新缓存抽象,是的。

1级缓存是每个Hibernate应用程序的一部分。

是。

为每个hibernate会话都创建了一级缓存。

是的,尽管你可以随时手动清除它。

一级缓存中保存了什么?对象还是仅仅是它们的属性值?查询及其结果?

它是会话期间获取的所有对象的映射,如果第二次通过id加载同一对象,则将从L1加载。

我发现:每个应用程序仅使用一次二级缓存。那不是假的吗?是不是每个sessionfactory只使用一次?并且:多个sessionfactorys =可能有多个2级缓存?

没错,通常每个应用程序(数据库)只有一个会话工厂,因此是捷径。

什么存储在第二级缓存中:我认为仅属于一个记录的值,而不是对象本身。

与L1相同,但寿命更长。L2通常由某种工业强度缓存支持,而L1只是一个映射(它甚至不必是线程安全的)。它存储完整的实体,包括延迟加载的关系。

在第二级缓存中存储一​​条记录中的值时,是否还可以存储相关值(来自通过外键连接的对象)?

你无需手动管理L2,它会自动发生。

在更新二级缓存中的一个对象的值时,是否也可以更新与其关联的对象在缓存中的值?

看上面。

当对象的值改变时,如何更新二级缓存?冲洗?我可以只更新缓存的一部分,还是必须更新整个缓存?

见上文-Hibernate会为你解决这个问题。你永远不会直接与L2交互。

2级缓存在哪里有意义,在哪里呢?

测量。在通过主键读取大量数据且读写因子非常高的应用程序中,L2对你的性能有重大影响。

缓存模式:每个缓存模式是否提供不同的缓存策略?例如,在缓存模式为“只读”的情况下,是否不需要同步数据库和缓存?其他缓存模式是否提供同步?我认为同步必须由开发人员自己完成吗?

缓存模式可帮助Hibernate选择最佳策略进行缓存和无效化。例如,如果缓存是只读的,则Hibernate不会使它失效(或者它不会经常这样做)。但是,只读缓存(只读实体)当然会禁止任何更新。

查询缓存和二级缓存之间有什么区别?我认为:在查询缓存中保存结果集,但不保存其值,仅保存其ID。当再次使用查询并且结果集仍然“正确”时,将从第二级缓存中查询属于这些ID的值。

确实如此,但这是一个非常广泛的话题。特别是结果集仍然是“正确的”部分。

对于查询缓存,必须使用二级缓存吗?

是的,如果没有L2缓存,查询缓存将毫无意义,并且会大大降低应用程序的速度。

查询缓存在哪里有意义,在哪里不有意义?

很难回答的问题,通常是在你多次执行同一查询并且查询参数的范围很低时(对于每组查询参数,都会创建新的查询缓存,并以所有记录ID作为结果)。

Spring是否提供比方法缓存更多的缓存可能性?

不,Spring或多或少只是你自己代码的粘合剂。

方法缓存未链接到hibernate缓存。

Spring没有链接到Hibernate,所以…

但是:对于方法缓存,第二级是必需的,例如ehcache(也可以由hibernate模式使用)

L2是hibernate概念。如果要缓存方法,则需要一些基础缓存。随它去吧,是EhCache。当然,它必须是线程安全的。

可以在没有数据库查询的情况下使用方法缓存吗?

Spring与Hibernate无关。你可能会缓存与数据库无关的计算。

如果将ehcache用于hibernate作为第二级缓存,将ehcache用于spring用于方法缓存,是否可以使用相同的ehcache-instance?有机会混在一起吗?

你可以使用与CacheManagerHibernate 相同的缓存配置来简化部署。只要高速缓存名称不重叠,它们就完全独立,甚至可以认为是在同一管理器中工作的。

当使用一级缓存和二级缓存时,它们是否会混淆?查询数据库时,结果是从哪里来的一级或二级缓存?第一级缓存与第二级缓存一起工作吗?

只要某些抽象不会泄漏,它们就可以工作:-)。当你通过主键查询时,首先检查L1(速度更快),然后检查L2。

还有其他什么可以通过使用我提到的缓存混淆的?:-)

参见上文,抽象倾向于泄漏。但是,当你更改数据库时,最严重的问题来了,而Hibernate对此一无所知。同样,没有正确复制的群集也会使你头疼。最大的问题-错误的缓存通常会减慢应用程序的速度(查询缓存在这里是最危险的)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号