HIbernate框架学习
【注】本人在观后此博客的借鉴,
https://blog.****.net/erlian1992/article/details/53761625
HQL概述
数据查询与检索是Hibernate框架中的一个亮点,相对其他ORM框架实现而言,Hibernate框架提供了灵活多样
的查询机制。
标准化对象查询(Criteria Query)是以对象的方式进行查询,将查询语句封装为对象操作。它的优点就是可读性
好,符合Java 程序员的编码习惯。缺点就是不够成熟,不支持投影(projection)或统计函数(aggregation)。
Hibernate语言查询(Hibernate Query Language,HQL),它是完全面向对象的查询语句,查询功能非常强
大,具备多态、关联等特性,因此也是Hibernate官方推荐使用HQL进行查询。
当然Native SQL Queries(原生SQL查询),直接使用标准SQL语言或跟特定数据库相关的SQL进行查询。
标准化对象查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL查询提供了更加丰富的和
灵活的查询特性,因此Hibernate框架将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询
的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。
完整的HQL语句形式如下:
select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc
其中的update/delete为Hibernate3中所新添加的功能,可见HQL查询非常类似于标准SQL查询。而且from子
句是HQL最基本的查询子句,也是一个HQL语句中必不可少的语句。
HQL与SQL重要的区别:
HQL是面向对象的查询语言,而SQL是面向数据表的查询语言。
HQL查询的是映射配置的持久化类及其属性,而SQL查询的是数据库中的数据表的数据。
初学HQL注意的问题:
HQL是面相对象的查询语言,对Java类大小写敏感;
SQL与HQL形式相似,本质不同;
HQL对关键字不区分大小写,推荐是小写;
以上引用自https://blog.****.net/erlian1992/article/details/53761625 的介绍
1.标准对象查询Criteria
public static void main(String[] args) throws Exception {
Session session = null;
Transaction tx = null;
try {
session=SessionManager.getSession();
tx = session.beginTransaction();
Criteria createCriteria = session.createCriteria(SysCity.class);
createCriteria.add(Expression.eq("id", Long.parseLong("387351")));
List<SysCity> list = createCriteria.list();
System.out.println(list.size()+"-----");
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
SessionManager.closeSession(session);
}
}
上述的使用的是Oracle的数据库,Expression引入的 importnet.sf.hibernate.expression.Expression;
其还有其他的表达式
HQL查询
查询子句——from子句
from子句是HQL语句最简形式,在SQL语句中select子句和from子句是必须的,而在HQL中只需要一个简单的
from子句即可被HIbernate解析执行。from子句指定了HQL语句查询主体,也就是指定了持久化类及其属性,默认
就是查询指定持久化类的所有属性信息。
from子句中不需要引入持久化类的全限定名,直接引入类名即可,因为HIbernate框架使用auto-import(自动
导入)功能。
from子句中别名的使用,为被查询的类指定别名,通常使用as关键字指定,也可以省略;在HQL语句其它部分通
过别名引用该类。
简单实例:
实体类Seller对应的数据表Seller数据:
引用其上述博客 HQL的使用 在他的博客已经表达的很清楚 我就不重复了。 我的项目是传统项目很久没使用这个框架,温故而知新,加强学习。