1、Query对象

使用Query对象需要写hql语句,使用hql语句操作的是实体类和属性。
用于查询全部的hql语句:from 实体类名称
 
例:String hql = "from UsersEntity";//准备hql语句
        Query query = session.createQuery(hql);//创建Query对象
        List<UsersEntity> usersEntitys = query.list();//调用Query方法进行查询
 

2、Criteria对象

使用这个对象查询全部数据,不需要写语句,直接调用方法实现即可
 
例:Criteria criteria=session.createCriteria(UsersEntity.class);//创建Criteria对象,此方法需要给出实体类名称
        List<UsersEntity> usersEntitys=criteria.list();//调用Criteria方法进行查询
 
 

3、SQLQuery对象

使用这个对象查询全部数据,需要写底层sql。
 
例:SQLQuery sqlQuery=session.createSQLQuery("select * from users");//创建SQLQuery对象,需要传入底层sql语句
        sqlQuery.addEntity(UsersEntity.class);//返回的list是数组,需要将其转换成实体类对象
        List<UsersEntity> usersEntitys=sqlQuery.list();//调用方法进行查询
 
flush-强制提交刷新session
clear--清除session
evict(Obj)将对象实例从session缓存清除
session.flush() 不是必须调用的
session.close()是必须调用的
session.clear()写在flush后面

解释session.flush()的调用牵扯到事务,首先我们知道在执行事务之前都会将AutoCommit设置为false【手动提交方式,因为默认是true自动提交的】 当AutoCommit为false时 我们执行完事务就要调用到session.flush();session.clear();一切处理完后我们要close掉当前的这个session但是当我们不做事务操作的时候 我们就没必要去调用session.flush()和session.clear()。直接session.close()就OK 因为这时close会默认调用一次session.flush()。如果使用了ThreadLocal那么就要在close方法里处理一下ThreadLocal。session.flush()的作用是将数据库与缓存中的数据同步 当session.clear()后才会引起缓存数据变化

 

方式一:基于实体类属性

对于实体的PO类,有2个要求:

1,必须继承Serializable接口

2,必须重写equals()方法和hashcode()方法(个人认为不是必须重写,只要其默认hascode能唯一的确定任何一个Person类即可,当然使用联合主键字段firstname和lastname重写equals()方法和hashcode()方法后,即可通过firstname和lastname唯一确定一个Person类,更符合数据库中firstname和lastname做为联合主键的设计)

hibernate 查询全部数据的三种方法的更多相关文章

  1. 关于Hive创建分区目录且能查到数据的三种方法

    关于Hive创建分区目录且能查到数据的三种方法 1. 使用dfs -mkdir 和 dfs -put 分别创建分区目录和上传数据,此时执行msck repair table 表名 命令就能查询到数据 ...

  2. C# Entity Framework 更新数据的三种方法

    例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public ...

  3. 去除DataTable重复数据的三种方法

    业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避 ...

  4. 去除DataTable重复数据的三种方法(转)

    转自:https://www.cnblogs.com/sunxi/p/4767577.html 业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需 ...

  5. python网络编程调用recv函数完整接收数据的三种方法

    最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

  6. android sqlite使用之模糊查询数据库数据的三种方式

    android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...

  7. ORACLE查询删除重复记录三种方法

    本文列举了3种删除重复记录的方法,分别是rowid.group by和distinct,小伙伴们可以参考一下.   比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完 ...

  8. Java多线程初学者指南(7):向线程传递数据的三种方法

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...

  9. php获取POST数据的三种方法

    方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据. $_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全 ...

随机推荐

  1. BZOJ.2724.[Violet 6]蒲公英(静态分块)

    题目链接 区间众数 强制在线 考虑什么样的数会成为众数 如果一个区间S1的众数为x,那么S1与新区间S2的并的众数只会是x或S2中的数 所以我们可以分块先预处理f[i][j]表示第i到第j块的众数 对 ...

  2. [BZOJ2650]积木

    [BZOJ2650]积木 题目大意: 有一排\(n\)个积木,第\(i\)个积木的高度为\(h_i\),定义混乱值为相邻两个积木高度之差的绝对值之和乘上系数\(c\).可以花费\(t^2\)的代价将一 ...

  3. [HihoCoder1378]网络流二·最大流最小割定理

    思路: 根据最大流最小割定理可得最大流与最小割相等,所以可以先跑一遍EdmondsKarp算法.接下来要求的是经过最小割切割后的图中$S$所属的点集.本来的思路是用并查集处理所有前向边构成的残量网络, ...

  4. [Beijing wc2012]算不出的算式

    OJ题号:BZOJ2659 思路:数学. 建立平面直角坐标系.在第一象限作直线y=qx/p,易得Σ[kq/p]即为当x<(p/2)时,直线下方(包括直线)的整点数:Σ[kp/q]为当y<( ...

  5. System类与Runtime类

    PS: Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能.java提供了System类与Runtime类来与程序的运行平台进行交互. System类: 1 ...

  6. iptables防火墙企业级模板

    目前公司业务已大多迁移至内网使用或者使用云主机,防火墙也渐渐不用了,在博客上记录一下,以免以后突然有用却找不到模板了.此防火墙脚本执行时默认清空旧的防火墙规则.放行本地loop网卡,DNS服务,NTF ...

  7. Java 中的“implements Runnable” 和“extends Thread”(转)

    知识点 “implements Runnable” 和“extends Thread”的不同 具体分析 最近在学习Android中的Handler消息传递机制时,创建新线程有两种方式:一种是实现Run ...

  8. 用Jersey构建RESTful服务1--HelloWorld

    一.环境1.Eclipse Juno R22. Tomcat 73. Jersey 2.7  下载地址( https://jersey.java.net/download.html) 二.流程1.Ec ...

  9. 面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)

    实例说明 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ...

  10. Python打包方法——Pyinstaller

    Python版本:Python3.5.2 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 ...