J2EE框架学习——Hibernate(一)

Hibernate重新开始学习,这一部分对于查询以及更新数据库。

  数据查询与检索是 Hibernate 中的一个亮点。相对其他 ORM 实现而言,Hibernate提供了灵活多样的查询机制。其中包括:

    1. Criteria Query

    2. Hibernate Query Language (HQL)

    3. SQL

首先讲一下Criteria Query:

       Criteria Query 通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query 可以看作是传统 SQL 的对象化表示,如:
Criteria criteria = session.createCriteria(TUser.class);
criteria.add(Expression.eq("name","Erica"));
criteria.add(Expression.eq("sex",new Integer(1)));

  Criteria 本身只是一个查询容器,具体的查询条件需要通过 Criteria.add方法添加到 Criteria 实例中。
Expression.eq 对应 SQL“field = value”表达式。如 Expression.eq("name","Erica")
Expression.allEq 参数为一个 Map 对象,其中包含了多个属性-值对应关系。相当于多个 Expression.eq 关系的叠加
Expression.gt 对应 SQL 中的 “field > value ” 表达式
.... ....


   Criteria 提供了更加符合面向对象编程模式的查询封装模式。不过, HQL(Hibernate
Query Language)提供了更加强大的功能,在官方开发手册中,也将 HQL 作为推荐的查询
模式。
   相对 Criteria,HQL 提供了更接近传统 SQL 语句的查询语法,也提供了更全面的特性。
   最简单的一个例子:
String hql = "from org.hibernate.sample.TUser";
  Query query = session.createQuery(hql);
  List userList = query.list();

   上面的代码将取出 TUser 的所有对应记录。
   如果我们需要取出名为“Erica”的用户的记录,类似 SQL,我们可以通过 SQL 语句加
以限定:
String hql ="from org.hibernate.sample.TUser as user where user.name='Erica'";
  Query query = session.createQuery(hql);
  List userList = query.list();

   其中我们新引入了两个子句“as” “where” as 子句为类名创建了一个别名, where和
子句指定了限定条件。
   HQL 子句本身大小写无关,但是其中出现的类名和属性名必须注意大小写区分。
   关于HQL, Hibernate 官方 开发手 册中已 经提供了 极其详尽 的说明 和示例 ,详 见Hibernate 官方开发手册(Chapter 11)。

你可能感兴趣的:(设计模式,sql,编程,框架,Hibernate)