Hibernate n+1问题
来源:互联网 发布:淘宝在哪里贷款 编辑:程序博客网 时间:2024/05/17 04:11
Hibernate 中常会用到set,bag等集合表示1 对多的关系, 在获取实体的时候就能根据关系将关联的对象或者对象集取出, 还可以设定cacade进行关联更新和删除。这不得部说hibernate 的orm做得很好,很贴近oo的使用习惯了。
但是对数据库访问还是必须考虑性能问题的, 在设定了1 对多这种关系之后, 查询就会出现传说中的n +1 问题。
1 )1 对多,在1 方,查找得到了n 个对象, 那么又需要将n 个对象关联的集合取出,于是本来的一条sql查询变成了n +1 条
2)多对1 ,在多方,查询得到了m个对象,那么也会将m个对象对应的1 方的对象取出, 也变成了m+1
怎么解决n +1 问题?
1 )lazy=true, hibernate3开始已经默认是lazy=true了;lazy=true时不会立刻查询关联对象,只有当需要关联对象(访问其属性,非id字段)时才会发生查询动作。
2)二级缓存, 在对象更新,删除,添加相对于查询要少得多时, 二级缓存的应用将不怕n +1 问题,因为即使第一次查询很慢,之后直接缓存命中也是很快的。
不同解决方法,不同的思路,第二条却刚好又利用了n +1 。
3) 当然你也可以设定fetch=join
- Hibernate n+1问题
- hibernate N+1问题
- hibernate N+1问题
- Hibernate N+1 问题
- hibernate 1+N问题
- Hibernate n+1问题
- hibernate:1+N问题
- Hibernate N+1 问题
- Hibernate n+1问题
- Hibernate N+1 问题
- Hibernate n+1问题
- Hibernate n+1问题
- Hibernate 1+N问题
- hibernate 1+n问题
- Hibernate N+1问题
- Hibernate n+1问题
- hibernate n+1问题
- Hibernate n+1问题
- 【转】linux 用户组的权限分配
- GC action的定义
- AJAX实现二级级联菜单
- MFC消息机制分析(转)
- Symbian和3G的关系
- Hibernate n+1问题
- bea寻检答疑
- 关于Windows Workflow Function 安装问题
- 做個腳踏實地的人
- 每天学一点flash(62) 类分类
- sqlserver 存储过程例子
- Hibernate one-to-one 的N+1问题分析及其解决方法
- 利好消息:明年国家促进20万大学毕业生进入服务外包企业工作。
- 开博志