欢迎来到天天文库
浏览记录
ID:14083247
大小:63.50 KB
页数:4页
时间:2018-07-25
《hibernate试验03_06.批量延迟加载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实践1批量延迟加载实验目的帮助学生理解掌握批量延迟加载的使用方式及其含义。技术要点lSQL基础知识;lHibernate基础知识。实验步骤1.打开HibernateProject03,下面我们演示批量加载。2.假设班级和学生是一对多关联,现在采用批量延迟加载得到班级,班级对象会通过类关联取得所有的学生数据,学生和身份证采用延迟加载策略。此时,我们Student.hbm.xml、Team.hbm.xml、Certificate.hbm.xml,如下:Student.hbm.xml:……2、ssname="com.qrsx.hibernate.model.Student"table="student"lazy="false">……3、rnate.model.Team"fetch="select"/>……Team.hbm.xml:…………4、udent"/>……Certificate.hbm.xml:…………1.修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;try{session=Hib5、ernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();tx.commit();HibernateUtil.closeSession(session);Teamteam=(Team)list.get(0);System.out.println(team.getStudents().size());}catch(HibernateExcept6、ione){//捕捉例外e.printStackTrace();tx.rollback();}returnlist;}2.运行TeamManager,控制台执行结果如下:EclipseConsole:Hibernate:selectteam0_.idasid2_,team0_.teamNameasteamName2_fromteamteam0_ERROR[main](LazyInitializationException.java:19)-failedtolazilyinitializeacollectionofrole:7、com.qrsx.hibernate.model.Team.students,nosessionorsessionwasclosed1.上述程序在Session关闭后试图打印延迟加载的学生集合,于是弹出了例外,这说明批量延迟加载是在“延迟”的基础上运行批量加载的。2.重新修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;t8、ry{session=HibernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();Teamteam1=(Team)l
2、ssname="com.qrsx.hibernate.model.Student"table="student"lazy="false">……3、rnate.model.Team"fetch="select"/>……Team.hbm.xml:…………4、udent"/>……Certificate.hbm.xml:…………1.修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;try{session=Hib5、ernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();tx.commit();HibernateUtil.closeSession(session);Teamteam=(Team)list.get(0);System.out.println(team.getStudents().size());}catch(HibernateExcept6、ione){//捕捉例外e.printStackTrace();tx.rollback();}returnlist;}2.运行TeamManager,控制台执行结果如下:EclipseConsole:Hibernate:selectteam0_.idasid2_,team0_.teamNameasteamName2_fromteamteam0_ERROR[main](LazyInitializationException.java:19)-failedtolazilyinitializeacollectionofrole:7、com.qrsx.hibernate.model.Team.students,nosessionorsessionwasclosed1.上述程序在Session关闭后试图打印延迟加载的学生集合,于是弹出了例外,这说明批量延迟加载是在“延迟”的基础上运行批量加载的。2.重新修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;t8、ry{session=HibernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();Teamteam1=(Team)l
3、rnate.model.Team"fetch="select"/>……Team.hbm.xml:…………4、udent"/>……Certificate.hbm.xml:…………1.修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;try{session=Hib5、ernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();tx.commit();HibernateUtil.closeSession(session);Teamteam=(Team)list.get(0);System.out.println(team.getStudents().size());}catch(HibernateExcept6、ione){//捕捉例外e.printStackTrace();tx.rollback();}returnlist;}2.运行TeamManager,控制台执行结果如下:EclipseConsole:Hibernate:selectteam0_.idasid2_,team0_.teamNameasteamName2_fromteamteam0_ERROR[main](LazyInitializationException.java:19)-failedtolazilyinitializeacollectionofrole:7、com.qrsx.hibernate.model.Team.students,nosessionorsessionwasclosed1.上述程序在Session关闭后试图打印延迟加载的学生集合,于是弹出了例外,这说明批量延迟加载是在“延迟”的基础上运行批量加载的。2.重新修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;t8、ry{session=HibernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();Teamteam1=(Team)l
4、udent"/>……Certificate.hbm.xml:…………1.修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;try{session=Hib
5、ernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();tx.commit();HibernateUtil.closeSession(session);Teamteam=(Team)list.get(0);System.out.println(team.getStudents().size());}catch(HibernateExcept
6、ione){//捕捉例外e.printStackTrace();tx.rollback();}returnlist;}2.运行TeamManager,控制台执行结果如下:EclipseConsole:Hibernate:selectteam0_.idasid2_,team0_.teamNameasteamName2_fromteamteam0_ERROR[main](LazyInitializationException.java:19)-failedtolazilyinitializeacollectionofrole:
7、com.qrsx.hibernate.model.Team.students,nosessionorsessionwasclosed1.上述程序在Session关闭后试图打印延迟加载的学生集合,于是弹出了例外,这说明批量延迟加载是在“延迟”的基础上运行批量加载的。2.重新修改TeamDAO的getAllTeam()方法,修改如下:TeamDAO.java:/*------------取得所有Team-----------------*/publicstaticListgetAllTeam(){Listlist=null;t
8、ry{session=HibernateUtil.currentSession();//开启连接tx=session.beginTransaction();//开启事务list=(List)session.createQuery("fromTeamt").list();Teamteam1=(Team)l
此文档下载收益归作者所有