hibernate中get,load,list,iterate的用法及比较
首先,get和load都是查询单个对象,而list和iterate为批量查询
注意以下写法仅针对hibernate3的语法。
使用案例如下:
// 1. get和load 的用法
Person p = session.get(Person.Class,1);
Person p = session.load(Person.Class,1); // 2.list和iterate的用法
List<Person> persons = session.CreateQuery(" from Person ").list();
for(Person person:persons) {
System.out.println(person.getName());
} Iterator<Person> persons = sesson.CreateQuery(" from Person ").iterate();
while(persons.hasNext()) {
Person p = persons.next();
System.out.println(p.getName());
}
load和get的区别:
load和get都是用于获取对象的数据,但是在使用中还是存在一些差别。
1. get在使用中,会查询一级缓存,但是如果没有命中,则提交sql语句到数据库重新查询。
2. load在使用中,会优先查询一级缓存,如果没有命中,则会查询二级缓存,如果仍然没有命中,才回提交sql到数据库中执行查询。
3. load支持延迟加载的功能,但是get不行。
4. 如果get未查询到结果,则会返回null值。 如果load未查询到结果,则会抛出异常信息ObjectNotFoundException。
在hibernate中,通常session层次的为一级缓存,sessionFactory层次的为二级缓存,其中二级缓存需要额外开启。
list和iterate的区别:
1. list是直接根据SQL提交到数据库查询,并获取所有的对象。
当再次查询时,然后是根据SQL提交到数据库中查询,并获取所有对象。
2. iterate分两步,第一步是根据SQL提交到数据库查询到所有对象的主键值,并保存到session缓存中去。
然后根据主键查询获取到所有的对象保存到sesson中。
当再次查询时,直接根据主键值查询缓存中的对象,如果存在的话,不再提交到数据库中重新查询了。
hibernate中get,load,list,iterate的用法及比较的更多相关文章
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法
本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...
- hibernate 中createQuery与createSQLQuery两个用法
hibernate 中createQuery与createSQLQuery两者区别是:前者用的hql语句进行查询,后者可以用sql语句查询前者以hibernate生成的Bean为对象装入list返回后 ...
- 转:Hibernate中Criteria和DetachedCriteria的完整用法
原文地址:http://blog.sina.com.cn/s/blog_667528fd0100rkrf.html 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 H ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法
Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法
HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...
- Hibernate 中Hql 查询中间表的用法
案例简述: 项目中存在User 用户表 和 Role 角色表 它们之间是多对多的关系 在User类定义中 使用hibernate注解 //角色列表 @ManyToMany(targetEntity = ...
- Hibernate中Session的get和load
hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别.测试版本:hibernate 4.2.0. get Session接 ...
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别 转自http://www.blogjava.net/bnlovebn/archi ...
- Hibernate中Session之get和load方法的真正区别
最近在学习SHH框架中的hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入 ...
随机推荐
- Exception:A generic error occurred in GDI+
分析: 一般出现这种问题都是GDI和原数据(比如Bitmap)是同一个实体,只不过是两个引用.换句话说就是这个路径的图片被GDI占用啦. 还有一种情况是路径有问题. 场景一: WPF的Image控件的 ...
- POJ2635The Embarrassed Cryptographer(大数取余+素数筛选+好题)
题目链接 题意:K是由两个素数乘积,如果最小的素数小于L,输出BAD最小的素数,否则输出GOOD 分析 素数打表将 L 大点的素数打出来,一定要比L大,然后就开始枚举,只需K对 素数 取余 看看是否为 ...
- Python实现打印二叉树某一层的所有节点
不多说,直接贴程序,如下所示 # -*- coding: utf-8 -*- # 定义二叉树节点类 class TreeNode(object): def __init__(self,data=0,l ...
- glade2支持C++代码的输出(1)
开发了一个基类,用于支持GTK2的信号回调 见BaseObject.zip 为了便于快速通过glade设计界面,并生成相应的C++代码,我对glade-2 2.12.2的代码进行了修改 原始代码:gl ...
- spark操作geoip的domain数据库
val ipv4 = sc.textFile("hdfs://hbase11:9000/sparkTsData/GeoIP2-Domain-Blocks-IPv4.csv").ma ...
- 查看linux机器是32位还是64位的方法
file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dyna ...
- Object.prototype.toString.call() 区分对象类型
判断一个对象的类型: /** * 判断对象是否为数组 * @param {Object} source 待判断的对象 * @return {Boolean} true|false */ Object. ...
- array_filter移除空数组
$arr = array( "0"=> "564645", "1"=>"", "2"=& ...
- 菜单each+hover
<script type="text/javascript"> $(document).ready(function(){ var src1= new Array('i ...
- RL中“#” “?” &“”号的作用
阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http ...