Hibernate 的延迟加载

Hibernate 的延迟加载

ID:40752070

大小:404.11 KB

页数:7页

时间:2019-08-07

Hibernate 的延迟加载_第1页
Hibernate 的延迟加载_第2页
Hibernate 的延迟加载_第3页
Hibernate 的延迟加载_第4页
Hibernate 的延迟加载_第5页
资源描述:

《Hibernate 的延迟加载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hibernate_Query_iterate的延迟加载1:通过Query接口的list()方法获取所有对象,然后调用Sesssion.delete(Obj)来删除对象2:通过Query接口的iterate()方法获取Iterator来迭代每个对象分别调用Sesssion.delete(Obj)来删除对象分析:Query.list()方法通过一条select语句来查询整个表来得到所以对象,且获得的对象是完整的.而Query.iterate()方法执行后,发出第一条select语句,只查询表的ID的一列!!!!Entitiesreturnedasresultsareinitia

2、lizedondemand.ThefirstSQLqueryreturnsidentifiersonly.对于每个对象,通过Sesssion.delete(Obj)来删除对象并,要先获取整个对象,当且仅当此时,才发出SQL语句来查询目标对象(行).只有当你对iterate()中的对象进行操作时,Hibernate才会向数据库再次发送SQL语句来获取该对象属性值.这就是Hibernate的”延迟加载”,”initializedondemand”并延迟加载时,Session不能被关闭,就是说如果Session被关闭了后,延迟加载就会抛出异常:org.hibernate.LazyI

3、nitializationException:couldnotinitializeproxy-noSessionatorg.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)atorg.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)atorg.hibernate.proxy.pojo.javassist.JavassistLa

4、zyInitializer.invoke(JavassistLazyInitializer.java:190)atbeans.People_$$_javassist_0.toString(People_$$_javassist_0.java)1:SRC1/////////////////////////////////////////////////////////////Sessionsession=sessionFactory.openSession();Transactiontx=session.beginTransaction();Queryquery=session

5、.createQuery("fromPeople");Iteratoriter=query.iterate();Peoplepeople=(People)iter.next();System.out.println(“--------“);System.out.println(people);tx.commit();session.close();/////////////////////////////////////////////////////////////执行结果:通过Debug单步运行,我们会发现查询people的SQL语句是在System.out.printl

6、n(people)执行时才发出的!!!为什么最终查询people的语句是在System.out.println(people)执行时才出发的?分析:(因为Query.iterate()返回的结果是延迟加载的)Peoplepeople=(People)iter.next();因为people会被延迟到其真正被使用时才加载..所以上面这一句执行后,people还没有被加载的….System.out.println(people);就在这一句才真正用到people,所以此时才会数据库发出SQL语句///////////////////////////////////////////

7、//////////////////2:SRC2/////////////////////////////////////////////////////////////Sessionsession=sessionFactory.openSession();Transactiontx=session.beginTransaction();Queryquery=session.createQuery("fromPeople");Iteratoriter=query.iterate();Peoplepeop

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。