HIbernate框架学习

【注】本人在观后此博客的借鉴,
https://blog.csdn.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.csdn.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;
其还有其他的表达式
Expression中其他可用的Api,具体如何使用可百度

HQL查询
查询子句——from子句
from子句是HQL语句最简形式,在SQL语句中select子句和from子句是必须的,而在HQL中只需要一个简单的

from子句即可被HIbernate解析执行。from子句指定了HQL语句查询主体,也就是指定了持久化类及其属性,默认

就是查询指定持久化类的所有属性信息。

   from子句中不需要引入持久化类的全限定名,直接引入类名即可,因为HIbernate框架使用auto-import(自动

导入)功能。

   from子句中别名的使用,为被查询的类指定别名,通常使用as关键字指定,也可以省略;在HQL语句其它部分通

过别名引用该类。

  简单实例:

  实体类Seller对应的数据表Seller数据:

引用其上述博客 HQL的使用 在他的博客已经表达的很清楚 我就不重复了。 我的项目是传统项目很久没使用这个框架,温故而知新,加强学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值