文档章节

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

风中帆
 风中帆
发布于 2014/06/18 08:44
字数 524
阅读 21928
收藏 17
点赞 3
评论 0

第一种方式: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
博文 193
码字总数 17363
作品 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
Hibernate使用小记

在使用Hibernate开发的过程中,遇到场景in条件查询,查询条件里的个数超过1w甚至更高(且不讨论这种方式是否合理),在生成hql,执行查询的时候发现执行list()方法的时候特别慢。后经从网查询...

Only_小白
2016/05/10
178
0
(J2EE学习笔记)六种方式实现hibernate查询

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

w1sw
2016/04/15
0
0
Hibernate Hibernate的检索方式

HIbernate提供了以下几种检索对象的方式: ①、导航对象图检索方式:根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以导航...

Winnie007
2015/10/02
22
0
六种方式实现hibernate查询

hibernate查询的6种方法。分别是HQL查询,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。 HQL查询 HQL是hibernate自己的一套查询语言,于SQL语法不同,具...

姚君
2014/04/03
0
0
Hibernate Query数据查询

主要由三种查询:HQL查询、Criteria条件查询、SQL查询。 以下分别讲解 1. HQL查询 HQL(Hibernate Query Language)查询提供了更加丰富和灵活的查询特性,因此Hibernate将HQL查询立为官方推荐的...

疯子船长
2015/10/26
1K
0
hibernate六种查询方式比较

HQL查询 HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点。示例代码: static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); //fro...

闵开慧
2014/06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

数据库事务的四大特性以及事务的隔离级别

本篇讲述数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是...

Java大蜗牛
10分钟前
0
0
Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 1. POM依赖配置 <properties><mapper.starter.version>2.0.3-beta1</mapper.starter.version></properties><!-- 通用Mapper --><dependency><groupId>t......

OSC_fly
18分钟前
0
0
CentOS7 双网卡绑定

环境 操作系统 CentOS7.5,禁用 NetworkManager 服务 网卡 eth0 网卡 eth1 绑定网卡 bond0 网卡 eth0 配置 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=EthernetBOOTPROTO=noneD......

Colben
20分钟前
0
0
zk实战--rpc框架集群化

在看此篇内容时需要浏览下面内容 netty实战--手写rpc框架 前文功能简介以及功能扩充 利用netty来实现一个点对点的rpc调用。客户端和服务端都是靠手写地址进行socket同学的,无法1对多,也无法...

xpbob
37分钟前
11
0
springboot 发送邮件

获取授权码 添加配置 # 账号和密码spring.mail.username=aaa@qq.comspring.mail.password=bbb# 服务器地址spring.mail.host=smtp.qq.comspring.mail.properties.mail.smtp.ssl.en...

阿豪boy
37分钟前
0
0
如何使用GNU Ring?

文章名:如何使用GNU Ring? 作者:冰焰火灵X 1079092922@qq.com 文章许可:CC BY-SA 4.0 ##1. 安装 下载GNU Ring 点击左边选择你的系统版本(这里以 GNU/Linux 为例,我使用的是Mint 18.3)...

ICE冰焰火灵X
40分钟前
4
0
深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
45分钟前
1
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
56分钟前
1
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
今天
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部