Spring中hibernate的分页方法Callback讨论
Spring和Hibernate结合的时候,接口提供非常有限
尤其是对于一些需要自定义对数据进行更改的操作时,Spring提供的update和save就远远无法满足复杂的业务需求了
此时,我们只能使用callback方法来回调,除此以外,Hibernate的分页查询功能也不能逃脱此列,只能使用callback方法来实现
于是我在架构项目的时候,写了两个callback方法以简化开发,减少冗余代码
一个是ExecuteCallback,用于执行更新和删除的
一个是PageCallback,用于执行hibernate分页的
这里就以PageCallback为例来讨论
protected List getPage(final String hql, final int startrow,final int pagesize) { return getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult(startRow); query.setMaxResults(pageSize); List list = query.list(); return list; } }}protected void execute(final String hql) { public synchronized Object doInHibernate(Session session) throws HibernateException,SQLException {Query query = session.createQuery(hql);return query.executeUpdate();} }}