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

使JPA EntityManager会话无效

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

使JPA EntityManager会话无效

缓存分为两个级别:

  • 第一级是EntityManager自己的缓存。

你可以refresh在一个实体上将其从数据库中重新加载,也可以clear在实体管理器本身中使用,在这种情况下,将从缓存中删除所有实体。JPA无法从缓存中逐出一个特定实体。根据你使用的实现,你可以执行此操作,例如Hibernate的evict方法。

  • 2级缓存是全局缓存。

JPA 1.0不提供对第二级缓存的支持。然后,你需要依赖于基础的特定实现或禁用它。JPA 2.0将通过@Cache注释和缓存API 解决此问题。你可以使用特定于Hibernate的API清除二级缓存,例如SessionFactory.evict(…)。

不了解的Hibernate 2级缓存
缓存的高级问题是:

  • Query cache

某些查询的结果可以被缓存。再次在JPA 1.0中不支持它,但是大多数实现都有指定将要缓存哪个查询以及如何缓存的方法。

  • 了解Hibernate中的查询缓存

  • Clustering

然后还有一个麻烦的问题,就是在集群中的节点之间同步缓存。在这种情况下,这主要取决于所使用的缓存技术,例如JBoss缓存。

你的问题仍然是通用的,答案将取决于你的实际工作。

我在一个系统上工作,无需进行hibernate即可完成许多更新,最后我们禁用了第二级缓存。

但是你也可以跟踪所有打开的会话,并在必要时驱逐所有打开的会话的所有第一级缓存以及第二级缓存。你仍然需要自己管理同步,但是我想这是可能的。



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

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

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