1. HibernateCallback是一個接口,該接口只有一個方法doInHibernate(org.hibernate.Session session),該方法只有一個參數 Session。
2. 方法 doInHibernate 的方法體就是 Spring執行的持久化操作。
3. 使用HibernateTemplate執行execute(new HibernateCallback())方法,從HibernateCallback中得到session,在此session中做多個操作,並希望這些操作位於同一個事務中。
4. 回調實際就是一種事件觸發模式,就象連環地雷一樣,一旦觸發一個,這個再觸發另外一個,你在find這個方法被執行時,希望同時執行其他方法,就需要回調。
例如:
return (List<E>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria
= session.createCriteria(entityClass);
criteria.setFirstResult(pageSize
* (pageIndex));
criteria.setMaxResults(pageSize);
return criteria.list();