hibernate中load和get方法的区别
1.读取时机不同(当lazy=true的时候)
load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延
迟机制(get语句时马上读库);
2.搜索不到数据时的情况
当搜索的数据不存在的时候,load依然会返回一个对象,在你使用该对象的非主键数
据时,会抛出异常;
当搜索的数据不存在的时候,get会返回一个null;
其实看似load到用的时候才去读数据库,比get要节省资源,但还没深入研究过。
3.get不支持lazy load支持lazy
4.采用get加载数据时,如果无匹配数据则返回null load则报异常
------------------------------------------------------------
hibernate lazy策略可以使用在:
* <class>标签上,取true,false值
* <property>标签上,取true,false需要增强类
* <set><list>上,取false,true,extra
* <one-to-one>、<many-to-one>单端关联上,可以取值false/proxy/noproxy
lazy概念:
只有真正使用该对象时,才会创建,对hibernate而言,真正使用的时候才会发出,
hibernate支持lazy策略只有在session打开状态下才有效如果把用延迟加载的话数据传递给动态
页面那么使用OpenSessionInView模式,直到我们把session中的所有属性用完了,才关闭session。
A.<class>标签上的lazy特性只对普通属性起作用hibernate在集合上的lazy策略,取值false,
true,extra
B.<class>标签上的lazy不会影响到集合上面的lazy特性,lazy默认为true;
C.集合标签上面的lazy特性推荐使用 extra 因为比较智能
D.在<class>上lazy为true时,load时不发出sql语句,只有在使用是才发出。为false时load时就
马上发出sql语句。
E.在<class>上lazy为true时,load时不发出sql语句,只有使用时才发出。为false时在第一次
load时就执行全部sql语句。为extra时,和true差不多,不过发出的sql语句比较智能。
F.hibernate 在<one-to-one><many-to-one>单端关联上,可以取值false/proxy/noproxy 默认proxy
G.<class>标签上的lazy不会影响到单端上面的lazy特性。
------------------------------------------------------------
Hibernate.initialize(Object proxy) 方法强制加载这样就相当于在程序中动态改变为lazy=false
hibernate中load和get方法的区别的更多相关文章
- Hibernate的load和get方法的区别
这次我们聊一下Hibernate3.2 Session加载数据时get和load方法的区别,我总结的如下: 1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在sessi ...
- datagrid中load,reload,loadData方法的区别
它有其中有load,reload,loadData这三个方法,它们都有相同的功能,都是加载数据的,但又有区别. load方法,比如我已经定义一个datagrid的id为grid,那这个方法的使用方式为 ...
- EasyUI-datagrid中load,reload,loadData方法的区别
EasyUI比较常用,其中的datagrid比较复杂,它有其中有load,reload,loadData这三个方法,它们都有相同的功能,都是加载数据的,但又有区别. load方法,比如我已经定义一个d ...
- Hibernate 关于load和get方法区别
load和个体方法都可以充分利用内部缓存和二级缓存中的现有数据. ******************************************************************* ...
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别 转自http://www.blogjava.net/bnlovebn/archi ...
- Java线程中run和start方法的区别
http://bbs.csdn.net/topics/350206340 Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法 ...
- 深入理解jQuery中live与bind方法的区别
本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用 ...
- js正则表达式中test,exec,match方法的区别说明
js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...
- jQuery中attr和prop方法的区别
jQuery中attr和prop方法的区别。 http://my.oschina.net/bosscheng/blog/125833 http://www.javascript100.com/?p=8 ...
随机推荐
- Java_一致性哈希算法与Java实现
摘自:http://blog.csdn.net/wuhuan_wp/article/details/7010071 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具 ...
- 关于C# WinForm 边框阴影窗体(一)
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- About_PHP
所谓PHP: 超文本预处理器 外文名称 Hypertext Preprocessor 编程范型 面向对象.命令式编程 php就是比js更高端的一种语言. 语法有两种: <?php ?& ...
- 在html中如何获取表单提交的数据
a.html: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www ...
- zk jquery的使用
jQuery_effects.zul: <?page title="Jquery" contentType="text/html;charset=UTF-8&quo ...
- SQL sp_executesql【转】
execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: ...
- spring注解实现AOP
项目结构图
- 微信公众号内H5调用微信支付国内服务商模式
最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP ...
- SpringMvc输入地址报错
出现上面的错误如果不是路径的问题,就应该找环境的问题,我这里的问题是tomcat7+jdk6,应该是jdk7或以后的版本(因为是web socket) 对应的版本http://tomcat.apach ...
- 《迷宫》特点分析之NABCD
项目名称:迷宫 特点之一:死亡模式 特点描述:在路径上设置一个个点,每个点作为一个障碍或加成点,设置各种类型陷阱来减少角色血量,还有加血和各种加成设置. N:普通迷宫形式单一,游戏过程较平淡,缺乏一定 ...