Hibernate 休眠分页

Hibernate 休眠分页,hibernate,Hibernate,我知道通过Hibernate中的setMaxResults和setFristResults方法,我可以进行分页。。但我的问题是如何将其与DAO分开,我的意思是,我只在那里实现DAO,我可以指定setMaxResults()&setFristResults()值,我想将其作为一个单独的层,因为如果假设有大约500个DAO的不同模块,那么很难相应地进行更改 代码如下: 域: public class Demo implements java.io.Serializable { private int

我知道通过Hibernate中的setMaxResults和setFristResults方法,我可以进行分页。。但我的问题是如何将其与DAO分开,我的意思是,我只在那里实现DAO,我可以指定setMaxResults()&setFristResults()值,我想将其作为一个单独的层,因为如果假设有大约500个DAO的不同模块,那么很难相应地进行更改

代码如下: 域:

public class Demo implements java.io.Serializable {
private int id;
private Date date;
private String weekday;
private Double cost;

public Demo() 
{

}

public Demo(Date date, String weekday, Double cost) 
{
    this.date = date;
    this.weekday = weekday;
    this.cost = cost;
}
/***Setter & getter***/
}
道:

public interface DemoDAO {

public void setPage(Page page);
public List<Demo> findAll();
}


public class DemoDAOImpl implements DemoDAO  {
private HibernateDAO hibernateDAO;
private Session session;
private Page page;

public DemoDAOImpl()
{
    hibernateDAO = new HibernateDAOImpl();
    session = hibernateDAO.getSession();
}

public void setPage(Page page) 
{
    this.page = page;
}

public List<Demo> findAll() 
{
    session.beginTransaction();
    Criteria criteria = session.createCriteria(Demo.class);
    criteria.setFirstResult(page.getPageNumber() * page.getPageSize());
    criteria.setMaxResults(page.getPageSize());

    List<Demo> demoList = criteria.list();
    session.getTransaction().commit();

    return demoList;
}
公共接口解调器{
公共作废设置页(第页);
公共列表findAll();
}
公共类DemoDAOImpl实现DemoDAO{
私人冬眠;
非公开会议;
私人网页;
公共解调impl()
{
hibernateDAO=新的HibernateDAOImpl();
session=hibernateDAO.getSession();
}
公共无效设置页(第页)
{
this.page=page;
}
公共列表findAll()
{
session.beginTransaction();
条件=session.createCriteria(Demo.class);
criteria.setFirstResult(page.getPageNumber()*page.getPageSize());
criteria.setMaxResults(page.getPageSize());
List demoList=条件。List();
session.getTransaction().commit();
返回人口列表;
}
服务:

public interface DemoService {

public List<Demo> showDetails(Page page);
}



public class DemoServiceImpl implements DemoService {
private DemoDAO demoDAO;

public DemoServiceImpl()
{
    demoDAO = new DemoDAOImpl();
}

public List<Demo> showDetails(Page page) 
{
    if(page != null)
        demoDAO.setPage(page);
    else
        page = new Page(0,50);

    return demoDAO.findAll();
}
}
公共接口演示服务{
公共列表显示详细信息(第页);
}
公共类DemoServiceImpl实现DemoService{
私家侦探;
公共DemoServiceImpl()
{
Democao=新的DemocaImpl();
}
公共列表显示详细信息(第页)
{
如果(第页!=null)
设置页面(第页);
其他的
页面=新页面(0,50);
返回demoDAO.findAll();
}
}
现在从前端我称之为showDetails


如果我使用的是正确的东西,请纠正我…

你这样使你的刀有状态,这不太好


您可以将
页面
作为参数传递给每个方法。因此,
DAO
的单个实例就足够了。

请详细说明…:)@Amit-将
页面
对象作为参数传递给方法。