J2EE框架学习——Hibernate(一)

本文介绍了Hibernate提供的几种查询方式:CriteriaQuery、HQL及SQL,并详细解释了CriteriaQuery的使用方法及特点,同时重点介绍了HQL的强大功能及其语法示例。
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 实例中。
[table]
|Expression.eq|对应 SQL“field = value”表达式。如 Expression.eq("name","Erica")
|Expression.allEq|参数为一个 Map 对象,其中包含了多个属性-值对应关系。相当于多个 Expression.eq 关系的叠加
|Expression.gt|对应 SQL 中的 “field > value ” 表达式
|....|....
[/table]

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)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值