hibernate的缓存

liuxuejin 2011-01-21 12:00:37
hibernate的缓存问题,一直比较疑惑。我知道hibernate一级缓存的底层使用map结构实现的。这里的疑问是:hibernate缓存存储的到底有哪些数据:难道只有PO?
如果有以下语句:
Objec max = (Object) this.getSession().createQuery("select max(" + code + ")" + " from " + entity).uniqueResult();
}
hibernate会缓存这个max对象吗?? max对象不是pojo。
只想弄明白:hibernate 会把什么数据放到一级缓存?难道从数据库取出来的数据都会放进去吗?
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qkniit 2011-01-21
  • 打赏
  • 举报
回复
一般是这样的
liuxuejin 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuc0317 的回复:]
hibernate 的一级缓存只会存储预处理的SQL语句,还有所有的配置文件信息!你查出的那个不会存储,预处理的SQL语句只会对按id查询的语句起作用。别的没有什么作用。在hibernate 起动时debug 打出可以看到!
[/Quote]这个估计不止吧!pohibernate还是会缓存的!
liuxuejin 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 id19870510 的回复:]
如果不在配置文件中指定查询缓存的话, 那么hibernate默认将不会做缓存处理

ps:底层数据库那就另当别论了,比如说你连续执行两条相同的sql, 在不同数据库中执行第二次往往要比第一次快

另外一级缓存是session的级别的,也就是connection级别, 如果 conn关闭了, 那么其缓存失效
同一个conn在进行load的时候会进行缓存处理。也就是说 第一次load的时候 ……
[/Quote]
谢谢哦 ,好的!最近被缓存弄得很郁闷啊!
liuc0317 2011-01-21
  • 打赏
  • 举报
回复
hibernate 的一级缓存只会存储预处理的SQL语句,还有所有的配置文件信息!你查出的那个不会存储,预处理的SQL语句只会对按id查询的语句起作用。别的没有什么作用。在hibernate 起动时debug 打出可以看到!
-droidcoffee- 2011-01-21
  • 打赏
  • 举报
回复
如果不在配置文件中指定查询缓存的话, 那么hibernate默认将不会做缓存处理

ps:底层数据库那就另当别论了,比如说你连续执行两条相同的sql, 在不同数据库中执行第二次往往要比第一次快

另外一级缓存是session的级别的,也就是connection级别, 如果 conn关闭了, 那么其缓存失效
同一个conn在进行load的时候会进行缓存处理。也就是说 第一次load的时候 hibernate默认会进行缓存处理
当你第二次load的时候 直接从hibernate缓存中查找,

get不进行缓存处理。

如果lz要想搞深hibernate的缓存机制的, 建议看一下其自带的 ehcache框架, 学习一下其中的思想
对你使用hibernate很有帮助的, 那个学起来也不是很费劲,我博客里有一些文档

方便的话可以一起探讨
liuxuejin 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cfd406635982 的回复:]
hibernate 的缓存东西比较多
和你查询所用的方式有关(比如:get、load)等
还有就是你的缓存策略
其实你找点资料全面看一下就知道
[/Quote]
这么简单就好了!
cfd406635982 2011-01-21
  • 打赏
  • 举报
回复
hibernate 的缓存东西比较多
和你查询所用的方式有关(比如:get、load)等
还有就是你的缓存策略
其实你找点资料全面看一下就知道
本书由互联网上影响广泛的开放文档OpenDoc系列自由文献首份文档“Hibernate开发指南”发展而来。在编写过程中,进行了重新构思与组织,同时对内容的深度与广度进行了重点强化。本书从持久层入手,引出对象/关系数据库映射的由来,接下来聚焦于目前最完善、最强悍的ORM产品——Hibernate。从一个基础程序入手,讲述Hibernate的基本语法与配置,慢慢升高到缓存、延迟加载等高级特性。本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术、自定义持久化实现、Hibernate回调与拦截、Hibernate分页等实用技术,Hibernate实战部分则用一个真实论坛的创建演示了Hibernate的强大功能。本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。本书适合于Hibernate的各个阶层的读者。 注:因为资源有点大,所以折分上传,需要把深入浅出hibernate(PDF)第一部分.深入浅出hibernate(PDF)第二部分,深入浅出hibernate(PDF)第三部分全部下载,并解压到一个地方才可以正常解压阅读.给大家带来不便望谅解.
这是一个实际使用中的项目,可访问 http://cdbke.cuit.edu.cn 可查看效果及功能,后台需要登录后才能使用(出于安全性考虑这里就不给大家介绍了,另外还有一个struts1版本的,如有需要可以与我联系)。 此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿google人名自动补全;头像上传剪切压缩处理。 包含有完整的jar包和源代码,可以直接下载编译部署和运行,这是专门为我们实验室定制开发的。虽然后台逻辑并不复杂,但已经包含了架构基于s2sh技术型系统的全部基础部分:如分页,缓存,文件上传,连接池等。很适合学习使用,希望对初学JavaEE WEB开的人有所帮助。 这个资源在去年发布了第一版,已经有很多朋友下了觉得对他们有帮助,所以我才再发了一个第二版,希望对有需要的朋友有所帮助。本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范检查,代码审查等功能(与此相关的jar包由于上传文件大小限制未导入) 本系统一直在使用中,所以还会不段更新,之后我打算再做一个基于javaee6的实现,给需要想学习ejb3.1等技术的朋友一个参考实现 集成测试相关jar包和更新构建脚本下载:http://download.csdn.net/source/2427972

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧