爱易网
IT新闻
IT新闻
爱易资讯
网站搭建
云虚拟主机教程
云服务器教程
Apache教程
IIS教程
Nginx教程
网站策划
站长文章
推广教程
淘宝客教程
网页设计
HTML教程
XHTML教程
CSS教程
HTML5教程
CSS3教程
JavaSript基础
JQuery教程
Node.js教程
前端技术
Ajax教程
Js特效
Xml教程
平面设计
页面UI设计
photoshop教程
程序开发
AI人工智能
Asp教程
Php教程
Asp.Net教程
Net Core教程
C#教程
Java教程
Jsp教程
开发技术
微信小程序教程
Uniapp开发教程
微信公众号开发
Andriod教程
IOS教程
DOS教程
Python教程
Docker教程
Windows Container教程
数据库
MSSQL教程
MySQL教程
Redis教程
Access教程
Oracle教程
数据库教程
操作系统
Linux教程
Windows教程
MAC教程
Cisco教程
交换机教程
防火墙教程
搜索
爱易网页
数据库教程
[Hibernate]怎么针对查询缓存失效的情况,仍同步使缓存数据跟数据库数据保持一致
[Hibernate]怎么针对查询缓存失效的情况,仍同步使缓存数据跟数据库数据保持一致
日期:2014-05-16 浏览次数:20632 次
[Hibernate]如何针对查询缓存失效的情况,仍同步使缓存数据跟数据库数据保持一致?
如标题所说
这个问题该如何解决呢?
或者存在比较好的方案
使数据 增删改后
使缓存和跟数据库数据保持一致?
还有个问题
如果针对不是基于主键为条件的查询 (load get )
是否就一定无法使用二级缓存?
还有网上有种说法:
说get无法使用二级缓存 这个应该是错误的吧
至少应该 Hibernate 3.0.5 是可以的
1 楼 raymond2006k 2008-10-08
1 get 可以使用二级缓存。 在要缓存的 hbm.xml 中配好 <cache usage="..."/>,就行了。
而且你可以和 query cache合用,例如:你通过一个 query 查出 A(1,2,...,10) 的集合, 下次用 get 查 id=3 的记录,就不会执行sql了,而直接从cache中获取。
2 至于你标题的问题:
不通过 Hibernate 进行的数据库操作,如:DBA后台数据操作等 是无法和Hibernate 二级缓存,query cache 进行同步的,因为Hibernate 不知道你在后面做了什么修改。这点 Hibernate 官方文档里有说。
所以 通过 Hibernate 进行的 增删改,Cache能自动更新,和 DB 进行同步。使用 get,load, HQL,Criteria 等查询都可以。
目前我个人只发现一种失效的情况,就是SQL Query多表查询时,关联表修改而对结果集或结果数据产生影响时, hibernate 无法更新cache; 例如: SQL Query:Q1, 结果类型 A, 查询用到的关联表 A,B,C, 修改了 C 的某条记录而对Q1的结果集产生影响。 这个我在另一片帖子中有分析,并正试图解决:
Hibernate查询缓存的一个可靠性问题
上一篇: CCNP_route札记6 关于OSPF中的hello和DBD顺序
下一篇: 小弟我用数据库连接池出现的一个异常大家看看咋回事
免责声明:
本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
相关资料
更多>
MongoDB 治理
Android的ADB工具施用
shiro 后盾权限认证集成jdbc数据库操作
内存储器数据管理(第2版)
oracle创建用户、表空间、受权、建表(转)
普普通通视图和物化视图区别,物化视图简单语法(转)
SQL Server中单引号的两种处理技巧
Linux上创建Sybase数据库
存储过程兑现 日期统计期间
推荐阅读
更多>
OracleDBA之路Undo Data(3)
ORACLE树查询 start with . connect by prior.
JDBC数据库连接轨范代码
oracle 查寻、删除重复记录
oracle游标cursor简略使用
JDBC跟连接池
ORACLE创造表空间、创建用户、更改用户默认表空间以及授权、查看权限
mysql数据库绿色版开启服务方法
oracle to_date的不一般格式化
oracle function的根本语句
关于“mongo dbpath (/data/db/) does not exist, terminating”有关问题
oracle涓煡璇㈣〃鐨勪俊鎭紝鍖呮嫭琛ㄥ悕锛屽瓧娈靛悕锛屽瓧娈电被鍨嬶紝涓婚敭锛屽閿敮涓€鎬х益鏉熶俊鎭紝绱㈠紩淇℃伅鐨勬煡璇QL鎬荤粨
oracle在desc表时,name 和type列不能格式化有关问题(占位过长)
依据不同的数据库调用不同的DBHelper(反射机制)
DBA常用命令汇总
联接LDAP数据库CRUD,包括分页查询的持久层代码
图形数据库-neo4j分享(嵌入式数据库)
备份和恢复概述
[转]oracle中关于in跟exists,not in 和 not exists
Oracle 创办索引、重建索引、删除索引的语法