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 ...
随机推荐
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- URL编码:不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。
URL编码:不同的操作系统.不同的浏览器.不同的网页字符集,将导致完全不同的编码结果. 因此如果Url中有中文或特殊字符,一定要自己调用函数编码解码,不要让浏览器帮你编码,否则出现了问题会浪费你很多时 ...
- html2canvas根据DOM元素样式实现网页截图
html2canvas是一个相当不错的JavaScript类库,它使用了html5和css3的一些新功能特性,实现了在客户端对网页进行截图的功 能.html2canvas通过获取页面的DOM和元素的样 ...
- petapoco定制,比较SQL事务,存储过程,分布式事务(MSDTC)的区别和场景
使用分布式事务时 就锁死了,而且是只锁编辑的行 使用.netSQL事务一定要执行了一个CUD的SQL才会锁死,而且也是锁行,但是也锁读的行 .netSQL事务要在这里才锁死 结论,对于产品要求细粒度的 ...
- 关于新增元素使用jQuery on()方法重复绑定的问题
最近写ajax新增元素button绑定click事件的时候发现元素重新添加进来的时候会多执行一次事件函数,找了半天,怀疑是on()的问题,于是测试了一下,果然是因为on()的使用方式造成了有的新增元素 ...
- linux 有趣的命令
input: echo ' > ..XXX. .XXX.. > .XXXXY.TXXXX. > XXXXXYXTXXXXX > .VXXVYXTVXXX. > `.TYX ...
- ado.net 修改,查询
修改: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- java web(三) Tomcat虚拟目录映射方式
Tomact服务器虚拟目录的映射方式 web应用开发好后若想被外界访问,需要将web应用所在的目录交给web服务器管理,这个过程称为虚拟目录的映射. 方式一:在server.xml文件的host元素中 ...
- CSS Bugs 解决方案
说明:本文档兼容性测试基础环境为:windows系统:IE6-IE10, Firefox6.0, Chrome13.0, Safari5.1, Opera11.51 Bugs及解决方案列表(以下实例默 ...
- BizTalk开发系列(八) BizTalk Server 常识整理
1.什么是BizTalk Server? BizTalk 是业务流程管理服务器,用于连接人员,流程,有效管理和提升业务所需的信息.在原有版本业务 流程管理和SOA/ESB 的基础上,第5 个版 ...