文档章节

Hibernate 的三种查询方式:HQL、Criteria、Sql

风中帆
 风中帆
发布于 2014/06/18 08:44
字数 524
阅读 22035
收藏 17

第一种方式:HQLHibernate Query LangugeHibernate 查询语言)查询

是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式

语法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]

 

(1).没使用Spring框架的写法:

使用HQL需要四步

得到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();

 

(2).使用Spring框架的写法:

String queryString = "select form entity ....";

List list=getHibernateTemplate().find(queryString);

 

 

第二种方式:Criteria 查询

Criteria 查询采用面向对象方式封装查询条件,又称为对象查询;

就是对SQL 语句进行封装,采用对象的方式来组合各种查询条件

Hibernate 自动产生SQL 查询语句

 

(1).没使用Spring框架的写法;

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

 

 

第三种方式:使用SQL语句查询(以下都是使用了Spring框架的写法)

1).这是把执行结果放到了一个类里:(这个类通常使用VO实体,VO实体一般就只用来接收查询结果)

List list = getHibernateTemplate().executeFind(new HibernateCallback() {

          public Object doInHibernate(Session session) throws HibernateException, SQLException {

                            StringBuffer hqlBuffer = new StringBuffer("");

                            hqlBuffer.append("select column_Name  from ...");//里面是SQL语句

                                              

                         SQLQuery sqlQuery = session.createSQLQuery(hqlBuffer.toString());

                 sqlQuery.addScalar("propertyName",Hibernate.STRING);//propertyName        ObjectVO实体的一个属性

                            sqlQuery.setResultTransformer(Transformers.aliasToBean(ObjectVO.class));    

                      List list = sqlQuery.list();

                      return list;//此处list集合中存放的是ObjectVO对象

                            }

                 });

 

2).返回结果放到list中的:

           final String queryString = "";//sql语句

           List resultList=getHibernateTemplate().executeFind(new HibernateCallback() {

                 public List doInHibernate(Session session) throws HibernateException, SQLException {

                      SQLQuery sqlQuery = session.createSQLQuery(queryString);

                      List list=sqlQuery.executeUpdate();

                      return list;

                 }

           });

 

 

3).无返回结果:

               final String queryString = "";//SQL语句

           getHibernateTemplate().executeFind(new HibernateCallback() {

                 public Object doInHibernate(Session session) throws HibernateException, SQLException {

                      SQLQuery sqlQuery = session.createSQLQuery(queryString);

                      sqlQuery.executeUpdate();

                      return null;

                 }

           });

© 著作权归作者所有

共有 人打赏支持
风中帆
粉丝 14
博文 196
码字总数 17695
作品 0
青岛
Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略; 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja...

别叫小伙
2017/03/09
0
0
关于Hibernate的Criteria查询

如同大家所了解的Hibernate框架技术是现今的主流SSH之一的技术,Cirteria查询诞生让的我们看到一种全新的方式(不得不说独特),不用自己编写的SQL或HQL(Hibernate Query Languae)语句 (这...

梦游先生
2013/12/10
0
0
Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

1.非集成Spring Hibernate的检索方式,主要有以下五种。 1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) 2.OID检索方式。(按照对象的OID来检索对象。) 3.HQL检索方式。(...

长平狐
2013/01/06
2.2K
0
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解

首先来看一下,hibernate提供的几种检索方式: 1.导航对象图检索方式 :根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以...

长平狐
2012/11/12
155
0
(J2EE学习笔记)六种方式实现hibernate查询

对Hibernate的底层调用数据库查询并不是很了解,引用了这位前辈的一篇博文。 注明文章出处:http://www.cnblogs.com/shiyangxt/archive/2009/01/13/1375151.html 实现hibernate查询的六种方式...

w1sw
2016/04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx 负载均衡

一.配置方式 1.轮询(默认) 优点:实现简单; 缺点:不考虑每台服务器处理能力 2.权重 weight默认是1。如果有多个配置权重的节点,比较相对值。 15:10,只代表访问8080端口的概率是访问908...

imbiao
38分钟前
1
0
jQuery学习笔记180923

jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些: addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选...

颖伙虫
49分钟前
1
0
[python] colorama 模块 - 改变控制台输出文本的颜色

除了使用 PyQt 这样的图形化开发框架外,基本上 python 程序都是跑在控制台中的。很多时候,单纯使用黑白的文字不能很好地突出我们要显示的信息。有时候我们需要将错误的提示使用红色标注,而...

cometeme
54分钟前
1
0
Makefile 学习 2 - 基于若干 Blog 的汇总

基于若干 Blog 汇总的 makefile 教程 陈皓 https://blog.csdn.net/haoel/article/details/2886 Makefile 进阶 1. Makefile 中的内容 显式规则。显式规则说明了,如何生成一个或多的的目标文件...

公孙衍
今天
1
0
NIO与BIO的区别、NIO的运行原理和并发使用场景

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的...

Java干货分享
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部