Criteria对象在运行时与Session对象绑定,所以二者的生命周期想通,即当Session对象失效后,Criteria对象也失效。Criteria生命期短而且不能重复使用。
DetachedCriteria对象可以实现离线查询可以解决Criteria不足
未完成。。。待续
DetachedCriteria对象可以实现离线查询可以解决Criteria不足
离线查询在web应用在某些功能实现中很有用,如在分层的web应用中有需要实现动态条件查询。
获取数据库中表中字段某一值的全部记录的代码实例:
/*获取数据库中的ClassMenuEntity表中的字段id=pid的全部记录
这属于web工程里Action类的代码段*/
String pid = request.getParameter("pid");
DetachedCriteria dc = DetachedCriteria.forClass(ClazzMenuEntity.class);//创建实例
dc.add(Restrictions.eq("parentMenuEntity.id", pid));
List<ClazzMenuEntity> menuList = clazzMenuDao.findByExample(dc);
/*
这段为DaoImpl中的代码段
getSessionFactory().getCurrentSession()获取当前的session(spring)
*/
public List findByExample(DetachedCriteria dc) {
return dc.getExecutableCriteria(getSessionFactory().getCurrentSession()).list();
}
未完成。。。待续