浏览 814 次
|
锁定老贴子 主题:关于hibernate多对一的缓存问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-06-23
例如 ForumTopic 和 Member是多对一的关系,配置了many to one,并且lazy=true
在页面配置了many to one , 那么 topic.member 必定有n+1的问题,在获取了一个forumTopic列表之后,每一行topic都要select * from member where id =? 配置了缓存以后,hibernate会缓存member么?似乎缓存好像对many to one的one方没有效果.. 即便配置了缓存,topic.member的时候,也是不会读缓存的,还是会select * from member where id =? 大家对于这样的多对一,在缓存上有什么好的实践么? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-06-23
robbin在"漫谈应用缓存的命中率问题"一贴中提到:
引用 毫无疑问,缓存的粒度越小,命中率就越高,对象缓存是目前缓存粒度最小的,因此被命中的几率更高。举个例子来说吧:你访问当前这个页面,浏览帖子,那么对于ORM来说,需要发送n条SQL,取各自帖子user的对象。很显然,如果这个user在其他帖子里面也跟贴了,那么在访问那个帖子的时候,就可以直接从缓存里面取这个user对象了。
那么就是说对于帖子和用户的many to one的关系,当topic.member的时候,如果配置了缓存,member能直接读缓存?不会select * from member where id=? 但实际hibernate似乎还会发送sql,不会读缓存 |
|
| 返回顶楼 | |


