1.Query对象

  1.使用Query对象,不需要写sql语句,但是写hql语句

    (1)hql:hibernate query language,提供查询语言,这个hql语言和普通sql语句相似

    (2)使用sql操作表和表字段

        使用hql操作类与属性

代码演示:

public class HibernateQueryDemo {
//Query对象
@Test
public void testQuery() {
SessionFactory sf=null;
Session session=null;
Transaction tx=null;
try {
sf=HibernateUtils.getSessionFactory();
session=sf.openSession();
tx=session.beginTransaction();
//
Query query=session.createQuery("from User");//查询语句为from加类名
List<User> list=query.list();
for (User user : list) {
System.out.println(user);
}
//
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
session.close();
sf.close();
}
}
}

2.Criteria象

@Test
public void testQuery() {
SessionFactory sf=null;
Session session=null;
Transaction tx=null;
try {
sf=HibernateUtils.getSessionFactory();
session=sf.openSession();
tx=session.beginTransaction();
//
Criteria criteria = session.createCriteria(User.class);
List<User> list=criteria.list();
for (User user : list) {
System.out.println(user);
}
//
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
session.close();
sf.close();
}
}

3.SQLQuery对象

调用底层sql语句

@Test
public void testQuery() {
SessionFactory sf=null;
Session session=null;
Transaction tx=null;
try {
sf=HibernateUtils.getSessionFactory();
session=sf.openSession();
tx=session.beginTransaction();
//
// SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
// List<Object[]> list=sqlQuery.list();//返回的是数组的形式
// for (Object[] object : list) {
// System.out.println(Arrays.toString(object));
// }
//
SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
sqlQuery.addEntity(User.class);
List<User> list=sqlQuery.list();//返回User对象
for (User user : list) {
System.out.println(user);
}
//
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
session.close();
sf.close();
}

Utils模板

package com.littlepage.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils {
private static Configuration cf;
private static SessionFactory sf;
static {
cf = new Configuration().configure();
sf = cf.buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sf;
}
public static void main(String[] args) { }
public static Session getSessionObject() {
return sf.getCurrentSession();
}
}

事务模板

import java.util.Arrays;
import java.util.List; import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test; public class HibernateQueryDemo {
//Query对象
@Test
public void testQuery() {
SessionFactory sf=null;
Session session=null;
Transaction tx=null;
try {
sf=HibernateUtils.getSessionFactory();
session=sf.openSession();
tx=session.beginTransaction();
//
// 事务内容
//
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
session.close();
sf.close();
}
}
}

Hibernate的查询功能的更多相关文章

  1. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  2. Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

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

  3. 第六讲(二) Hibernate HQL查询

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibe ...

  4. Hibernate HQL查询:

    Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查 ...

  5. Hibernate HQL查询语句总结

    Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";L ...

  6. Hibernate的查询,二级缓存,连接池

    Hibernate的查询,二级缓存,连接池 1.Hibernate查询数据 Hibernate中的查询方法有5中: 1.1.Get/Load主键查询 使用get或者load方法来查询,两者之间的区别在 ...

  7. Hibernate【查询、连接池、逆向工程】

    前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式....到目前为止,我们都是使用一些简单的主键查询阿...使用HQL查询所有的数据....本博文主要讲解Hiberna ...

  8. Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  9. 用Java实现异构数据库的高效通用分页查询功能

    不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...

随机推荐

  1. FastStone Capture无法录制系统声音解决方法(win10)

    步骤一: 右键桌面-->个性化 步骤二: 主题-->高级声音设置 步骤三: 录音-->右键“立体声混音”,单击启用就OK了.

  2. \r\n回车换行\r回车\n换行的区别

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候 ...

  3. 4~20mA

    4~20mA电流输出芯片XTR111完整电路 0-5v转0-20ma和0-5v转4-20ma 压控恒流源电路 4-20mA电流环路发送器入门

  4. 状态管理之cookie使用及其限制、session会话

    # 1.什么是状态管理? 将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来.(cookie浏览器所涉及到的访问数据保存下来)# 2.如何进行状态管理? ...

  5. Hbuilder安装

    ---恢复内容开始--- ---恢复内容结束---

  6. 解决mySQL占用内存超大问题

    为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆.网上搜索了一下,得到高人指点my.ini.再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过 ...

  7. Django form choices, placeholder

    item=CharField(max_length=20,min_length=1,required=True,widget=widgets.TextInput({'placeholder':'tes ...

  8. Bootstrap表单样式

    <form class="form-horizontal" role="form"> <fieldset> <legend> ...

  9. 关于A left join B,A是否一定是主表?

    一般情况,我们作左连接 select * from A left join B  on A.id=B.a_id;一定认为A就是主表,其实还有另外的情况,我们若将sql改写成 select * from ...

  10. KNN(K-Nearest Neighbor)介绍

    KNN(K-Nearest Neighbor)介绍 原文地址:https://www.cnblogs.com/nucdy/p/6349172.html Wikipedia上的 KNN词条 中有一个比较 ...