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);