hibernate中一对多时候如何进行分页获取集合对象?

magicluo 2010-07-04 11:41:57
我的父类对象category中包含一个集合set的子对象product..

category对象对应的 hbm.xml中对product进行了set映射.

hibernate可以延迟检索到多个子对象,但他好像是一次性全部检索出来的.

我要分页检索出来 如何处理。

我说的是后台基于数据库的分页操作.
...全文
165 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oxcow 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 magicluo 的回复:]
虽然set中可以设置batch-size 来设置批量抓取的数量 ... 但我感觉很别扭,特别是我需要统计总页数,在前端 jsp 中使用分页标签进行显示数据时候,比较麻烦.....[/Quote]

一般情况下还是用两条SQL来统计,一条SQL查询出某个条件下的所有行数,让后在使用rownum\limit进行查询控制;

这里不太明白你要对那些数据进行分页?是category还是查询出来的每个category所包含的product进行分页?同时针对batch-size的大小一般设置为分页大小。
macower 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bearkin 的回复:]

如果你这次查询的重点是你的子对象的话你没必要非得通过父对象把他关联出来啊 单独查子对象不好么?
总记录数永远都是单独查询的
[/Quote]

你可以考虑弄一个div 然后显示集合信息 (通过查询一的一端的信息得到该集合的分页)
magicluo 2010-07-05
  • 打赏
  • 举报
回复
这个是我定义的Category类:

public class Category{
private Intger id;
private String name;
private Set<Product> products=new Hashmap<Product>();

//getter and setter method

}


当然是可以这样

在product类的业务逻辑类中定义一个方法,通过传递一个类别对象和分页参数,分页获取该类别下的产品信息



/*
分页查询category类别下的product信息,返回一个包含了分页数据的对象Page
@param category 产品类别
@param pageNo 显示的页码
@param pageSize 页的大小
@result 查询的该类的第pageNo页的全部数据
*/
public Page<Product> queryByPage(Category category,pageNo,pageSize);

//调用Query中的分页方法进行分页查询数据



如此一来,貌似可以...
但我在持久化类中定义的 一对多的set映射,利用hibernate的延迟加载来获取的全部的products对象,却还是没有什么效率? 当我的 category关联1000个product对象的时候 即使是延迟加载,那只是加载这个动作是延迟进行的,并不是说明加载的过程是延迟的,有1000个对象他会持续发送1000条 select 数据..
获取整个数据的过程是全部获取到的。

虽然set中可以设置batch-size 来设置批量抓取的数量 ... 但我感觉很别扭,特别是我需要统计总页数,在前端 jsp 中使用分页标签进行显示数据时候,比较麻烦.....

??
huxin889 2010-07-05
  • 打赏
  • 举报
回复
学习一下!!!
BearKin 2010-07-05
  • 打赏
  • 举报
回复
如果你这次查询的重点是你的子对象的话你没必要非得通过父对象把他关联出来啊 单独查子对象不好么?
总记录数永远都是单独查询的
magicluo 2010-07-05
  • 打赏
  • 举报
回复
呵呵

只能是我说的第二种....

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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