引用 DetachedCriteria
来源:互联网 发布:贪玩蓝月翅膀升级数据 编辑:程序博客网 时间:2024/05/28 19:23
使用Criteria可以很好地使用实现动态查询,但是Criteria与Session绑定,其生命周期跟随着Session的
结束而结束,使用Criteria进行查询时,每次都要在执行时期动态建立对象,并回味入各种查询条件,跟着
Session的回收,Criteria也跟着回收.当然在WEB层也可以打开Session建立Criteia,但是这不符合分层
要求,层之间耦合太严重.DetachedCriteria可以解决这个问题,即在WEB层,程序员要以使用DetachedCriteria
来构造查询条件,然后将这个DetachedCriteria作为方法调用参数传递给业务层对象.而业务层对象获得
DetachedCriteria之后,可以在Session范围内直接构造Criteria,然后进行查询.这样,查询语句的构造脱离
了Session范围,完全被移支到WEB层实现,而业务层则只负责完成持久化和查询封装即可,与查询条件的构造
完全解耦.
在StudentDAO.java中编写一个方法,在Session范围内以传入的DetachedCriteria作为查询条件进行查询,
并返回list集合,如以下程序
public List findStudent(DetachedCriteria detachedCriteria)
{
List list = null;
/*open session and begin transaciton*/
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
list = criteria.list();
/*commit transaction and close session*/
return list;
}
然后在Session之外(JSP页面,或是示例程序的main()中)编写如下代码来构造查询条件:
public static main(String[] args)throws HibernateException{
DetachedCriteria detachCriteria = DetachedCriteria.forClass(Student.class);
String name = "aaa";
int age = "18";
if(name != null){
detachedCriteria.add(Restrictions.like("name",name,MatchMode.ANYWHERE));
}
if(age != 0){
detachedCriteria.add(Restrictions.eq("age",new Integer(age)));
}
detachedCriteria.addOrder(Order.asc("name"));//排序
List list = StudentDAO.findStudent(detachedCriteria);
for(int i=0;i<list.size();i++)
{
Student stu = (Student)list.get(i);
}
}
- 引用 DetachedCriteria
- 引用 DetachedCriteria
- DetachedCriteria
- DetachedCriteria
- DetachedCriteria 查询
- DetachedCriteria 用法
- DetachedCriteria 用法
- DetachedCriteria 使用手册
- DetachedCriteria用法
- detachedCriteria应用
- hibernate detachedcriteria
- DetachedCriteria用法
- DetachedCriteria用法
- DetachedCriteria用法
- Hibernate - DetachedCriteria
- DetachedCriteria用法
- DetachedCriteria用法
- DetachedCriteria用法
- D3D中的颜色和着色
- Ubuntu下配置lazarus开发环境======转帖橙子的blog
- 将一个整数n转换成换成一个字符串。如将1234转换为"1234"。
- 使用KOL开发体积较小的应用程序
- Hibernate3的DetachedCriteria支持
- 引用 DetachedCriteria
- 项目反思:DetachedCriteria需要吗?不需要吗?
- Hibernate中DetachedCriteria的使用
- Hibernate - DetachedCriteria 的完整用法
- 在DetachedCriteria中去掉重复行
- Membership
- 3D引擎(3D engine)、3D编程语言(3D language)和3D创作系统(3D authoring system)的区别是什么?
- ubuntu 8.04 设置中文支持
- 分布式编译实施