欢迎来到天天文库
浏览记录
ID:46682002
大小:161.00 KB
页数:19页
时间:2019-11-26
《Hibernate关联映射关系下的延迟加载剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Hibernate关联映射关系下的延迟加载剖析一对多模式下的普通延迟加载•当在一对多关联映射模式下,设置Dept类的映射文件的vSet>标签的lazy屈性为Dept类的映射文件如下:7^8-9-111213-2、ropertyname=ndnamentype=f,java・lang.String^14vcolumnname=length="/>1516-17181920-企Z223242526273、e-to-manyEntity.Emp"I?8测试代码:publicstaticvoidmain(String[]args){16//TODOAuto-generatedmethodstub17Sessionsession=null;18Transactiontx=null;1920try{21session=HibernateSessionFactory・getSession(J)222324*在一对多的关联映射下,设置Dept映射文件的vSet>节点的lazy属性为true(开启延迟加載)时,25♦加載dep4、t对象仅査询QgRt表的字段2627//即:不会初始化代理类的实例28Deptdept=(Dept)session.get(Dept.class,newByte('10'));2930}catch(HibernateExceptione){31//TODOAuto-generatedcatchblock32e・printStackTrace();33}34}35}36运行结果:Hibernate:IselectdeptO^.DEPTNOasDEPTNO0.0.,deptO^.DNAMEasDNAME0_0_,dept0«.LOCasLOC0_0_fromSCOTT.DEPTdept5、0^wheredept0..DEPTNO=?运行结果解释:既然开启了懒加载模式,那么在加载Dept对彖的时候就只会查询DEPT表的数据,而与其关联的EMP表的数据则不会查询岀来。懒加载模式就是为了查询到该查询的数据,避免无用数据一起被携带出來,提高性能,提高效率。•当在一对多关联映射模式下,设置<Set>标签的lazy属性为true:配置文件和上同,现在需要使用迭代器Iterator来调用集合的iterator!防法进行访问集合操作:packageTest;importjava.util.Iterator;;publicclasstest{/♦♦♦©paramargs♦/publi6、cstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSessionsession=null;Transactiontx=null;try{session=HibernateSessionFactory.getJesszonO;♦在一对多的关联映射下,设置Dept映射文件的节点的lazy厲性为true(开启延迟加载)时,•加栽dept对象仅査询Dept表的字段♦///即:不会初始化代理类的实例Deptdept=(Dept)session.get(Dept.class,newByte(M10M));/♦♦•此7、时,当程序第一次访问时调用iterator^方法会初始化代理类的实例•即:结果中的第二个select语句会査询出£阻对象的EMP表的敖据来,此时才是真正使用♦///实例化一个£陀类型的Set集合,获取一下Q述对象的刽nps集合Setemps=dept.getEmps();//并且便用迭代器Iteratoremplterator=emps.iterator();//Hibernate.irntialize(emps);}catch(Hibernate
2、ropertyname=ndnamentype=f,java・lang.String^14vcolumnname=length="/>1516-17181920-企Z223242526273、e-to-manyEntity.Emp"I?8测试代码:publicstaticvoidmain(String[]args){16//TODOAuto-generatedmethodstub17Sessionsession=null;18Transactiontx=null;1920try{21session=HibernateSessionFactory・getSession(J)222324*在一对多的关联映射下,设置Dept映射文件的vSet>节点的lazy属性为true(开启延迟加載)时,25♦加載dep4、t对象仅査询QgRt表的字段2627//即:不会初始化代理类的实例28Deptdept=(Dept)session.get(Dept.class,newByte('10'));2930}catch(HibernateExceptione){31//TODOAuto-generatedcatchblock32e・printStackTrace();33}34}35}36运行结果:Hibernate:IselectdeptO^.DEPTNOasDEPTNO0.0.,deptO^.DNAMEasDNAME0_0_,dept0«.LOCasLOC0_0_fromSCOTT.DEPTdept5、0^wheredept0..DEPTNO=?运行结果解释:既然开启了懒加载模式,那么在加载Dept对彖的时候就只会查询DEPT表的数据,而与其关联的EMP表的数据则不会查询岀来。懒加载模式就是为了查询到该查询的数据,避免无用数据一起被携带出來,提高性能,提高效率。•当在一对多关联映射模式下,设置<Set>标签的lazy属性为true:配置文件和上同,现在需要使用迭代器Iterator来调用集合的iterator!防法进行访问集合操作:packageTest;importjava.util.Iterator;;publicclasstest{/♦♦♦©paramargs♦/publi6、cstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSessionsession=null;Transactiontx=null;try{session=HibernateSessionFactory.getJesszonO;♦在一对多的关联映射下,设置Dept映射文件的节点的lazy厲性为true(开启延迟加载)时,•加栽dept对象仅査询Dept表的字段♦///即:不会初始化代理类的实例Deptdept=(Dept)session.get(Dept.class,newByte(M10M));/♦♦•此7、时,当程序第一次访问时调用iterator^方法会初始化代理类的实例•即:结果中的第二个select语句会査询出£阻对象的EMP表的敖据来,此时才是真正使用♦///实例化一个£陀类型的Set集合,获取一下Q述对象的刽nps集合Setemps=dept.getEmps();//并且便用迭代器Iteratoremplterator=emps.iterator();//Hibernate.irntialize(emps);}catch(Hibernate
3、e-to-manyEntity.Emp"I?8测试代码:publicstaticvoidmain(String[]args){16//TODOAuto-generatedmethodstub17Sessionsession=null;18Transactiontx=null;1920try{21session=HibernateSessionFactory・getSession(J)222324*在一对多的关联映射下,设置Dept映射文件的vSet>节点的lazy属性为true(开启延迟加載)时,25♦加載dep
4、t对象仅査询QgRt表的字段2627//即:不会初始化代理类的实例28Deptdept=(Dept)session.get(Dept.class,newByte('10'));2930}catch(HibernateExceptione){31//TODOAuto-generatedcatchblock32e・printStackTrace();33}34}35}36运行结果:Hibernate:IselectdeptO^.DEPTNOasDEPTNO0.0.,deptO^.DNAMEasDNAME0_0_,dept0«.LOCasLOC0_0_fromSCOTT.DEPTdept
5、0^wheredept0..DEPTNO=?运行结果解释:既然开启了懒加载模式,那么在加载Dept对彖的时候就只会查询DEPT表的数据,而与其关联的EMP表的数据则不会查询岀来。懒加载模式就是为了查询到该查询的数据,避免无用数据一起被携带出來,提高性能,提高效率。•当在一对多关联映射模式下,设置<Set>标签的lazy属性为true:配置文件和上同,现在需要使用迭代器Iterator来调用集合的iterator!防法进行访问集合操作:packageTest;importjava.util.Iterator;;publicclasstest{/♦♦♦©paramargs♦/publi
6、cstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSessionsession=null;Transactiontx=null;try{session=HibernateSessionFactory.getJesszonO;♦在一对多的关联映射下,设置Dept映射文件的节点的lazy厲性为true(开启延迟加载)时,•加栽dept对象仅査询Dept表的字段♦///即:不会初始化代理类的实例Deptdept=(Dept)session.get(Dept.class,newByte(M10M));/♦♦•此
7、时,当程序第一次访问时调用iterator^方法会初始化代理类的实例•即:结果中的第二个select语句会査询出£阻对象的EMP表的敖据来,此时才是真正使用♦///实例化一个£陀类型的Set集合,获取一下Q述对象的刽nps集合Setemps=dept.getEmps();//并且便用迭代器Iteratoremplterator=emps.iterator();//Hibernate.irntialize(emps);}catch(Hibernate
此文档下载收益归作者所有