SSH-Hibernate:hql与criteria

来源:互联网 发布:eia数据对黄金的影响 编辑:程序博客网 时间:2024/05/22 08:26


  hql:(Hibernate Query Languge,Hibernate 查询语言)查询是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式.

  语法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]

public List<Category> findAll() {String hql = "from Category";List<Category> list = this.getHibernateTemplate().find(hql);return list;}


         上面的代码是在Spring框架中的写法,另外就需要四步得到Session、编写HQL语句、创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能)、执行查询,得到结果:

    sessionFactory = new Configuration().configure().buildSessionFactory();    session = sessionFactory.openSession();    String hql = “from Street”;    Query query = session.createQuery(hql);    List<Street> list = query.list();

   Criteria 查询

  Criteria 查询采用面向对象方式封装查询条件,又称为对象查询;

 就是对SQL 语句进行封装,采用对象的方式来组合各种查询条件

 由Hibernate 自动产生SQL 查询语句

 (1).没使用Spring框架的写法;

 Criteria由Hibernate Session进行创建

      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();      Session session = sessionFactory.openSession();      Criteria criteria = session.createCriteria(User.class);      List result = criteria.list();      Iterator it = result.iterator();


 (2)使用Spring框架的写法:

import org.hibernate.criterion.DetachedCriteria; DetachedCriteria criteria=DetachedCriteria.forClass(ObjectEntity.class);criteria.add(Restrictions.eq("propertyName", propertyValue));List result=getHibernateTemplate().findByCriteria(criteria);



0 0