一,1+N问题也可以叫N+1问题,什么是1+N问题呢?
如果在一个对象里关联另一个对象,并且fetch = FetchType.EAGER。
比如说ManyToOne关联(OneToMany也存在这种问题,默认是Lazy,fetch = FetchType.EAGER就会出现1+N问题),本来只需要取Many里的对象属性,可是Many里关联的对象都会单独再发一条语句取关联对象的属性。
本来只用发一条就可以查出Many里的对象属性,可是它发了一条语句后,再发N条语句取关联对象的数据。
二,1+N问题的解决方法
1,设置fetch = FetchType.LAZY:在合适的时候才发出语句(按需要发语句)。
2,@BatchSize:在One对象设置(如@BatchSize(size=10))Size后,取出Many里的数据后,再发N/Size条语句取关联对象的数据,从而达到少发语句的目的。
3,Join Fetch:将Many与One做外连接,因此只要发一条语句就可以查出Many与其相关联的One对象数据,Criteria默认就是这种做法。
a)、from OrderItem oi left join fetch oi.order o
b)、使用QBC的 createCriteria(*.class)执行查询
三,如何选择解决办法
1),如果只要用Many里的对象,不用关联对象的属性,那就用方法1解决;
2),如果要Many里的对象属性,也想要关联的对象属性就用方法3解决。
分享到:
相关推荐
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part2/3
读书笔记:基于struts+hibernate+spring+easyui+mysql的网上商城项目实战源码
轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发 part3 李刚
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。 这是第三部分,我上传的上限是60MB,所以不得不分包额!
- 懒加载(Lazy Loading):默认情况下,Hibernate对1:N或N:1关联使用懒加载策略。这意味着主对象被加载时,其关联的对象不会立即加载,而是在第一次访问关联对象时才发起数据库查询。 - 急加载(Eager Loading)...
精通Java+Web开发:基于Struts+EJB+Hibernate+JBuilder随书光盘
Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记
《JavaWeb整合开发完全自学手册》介绍如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipseIDE开发,引领读者快速进入基于JavaWeb的J2EE应用领域。《JavaWeb整合开发完全自学手册》主要...
Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...
**标题:“Hibernate N+1问题解决办法”** 在Java开发中,使用Hibernate作为ORM框架时,我们可能会遇到一个性能上的问题,那就是著名的“N+1查询问题”。此问题源于不恰当的数据加载策略,可能导致数据库查询效率...
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part1/3
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
项目使用工具:工具myeclipse + mysql + tomcat使用java框架:hibernate + struts + spring + bootstarp + mahout实现功能:后台图书管理:图书的增删改查, 后台类目。前台书店:图书的分页查看, 前台类目, 多条件...
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part3/3
轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发 李刚
轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate
轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发 李刚 part2
项目配置:Hibernate3.3.2+Spring3.0+Struts2.2.3 + ext3.4.0,真实项目实现,项目中可参考经典权限设计,通用数据录入,批量数据处理(poi),统一的JSON格式封装,灵活的组合模式设计,EXTJS面向组件编程参考......
轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发 part4 李刚