跟我学Hibernate框架技术在容器外实现Hibernate框架继承映射关系第2部分_第1页
跟我学Hibernate框架技术在容器外实现Hibernate框架继承映射关系第2部分_第2页
跟我学Hibernate框架技术在容器外实现Hibernate框架继承映射关系第2部分_第3页
跟我学Hibernate框架技术在容器外实现Hibernate框架继承映射关系第2部分_第4页
跟我学Hibernate框架技术在容器外实现Hibernate框架继承映射关系第2部分_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料目 录1.1在容器外实现hibernate框架继承映射关系及实例(第2部分)21.1.1应用单元测试技术测试本实例的应用效果21.1.2体验hibernate中lazy技术91.1.3体验多态查询技术的应用101.1.4进一步完善本项目的实例111.1 在容器外实现hibernate框架继承映射关系及实例(第2部分)1.1.1 应用单元测试技术测试本实例的应用效果1、增加一个dao的接口derivedhibernatedaointerface包名称为er在该接口中添加下面的方法pac

2、kage er;import org.hibernate.hibernateexception;public interface derivedhibernatedaointerface public boolean dofindallpersoninfo() throws hibernateexception;2、提供对该方法的实现类derivedhibernatedaoimple包名称为com.px1987.sshwebcrm.dao.implepackage com.px1987.sshwebcrm.dao.imple;import

3、 java.util.arraylist;import java.util.list;import mons.logging.log;import mons.logging.logfactory;import org.hibernate.hibernateexception;import org.hibernate.session;import org.hibernate.transaction;import er.derivedhibernatedaointerface;import com.px1987.sshwebcrm.dao.p

4、object.abstractpersonpo;import com.px1987.sshwebcrm.dao.pobject.studentpo;import com.px1987.sshwebcrm.dao.pobject.teacherpo;import com.px1987.sshwebcrm.dao.util.hibernateutil;public class derivedhibernatedaoimple implements derivedhibernatedaointerface private static log log = logfactory.getlog(deri

5、vedhibernatedaoimple.class);public derivedhibernatedaoimple() public boolean dofindallpersoninfo() throws hibernateexception session session=null;transaction tx=null;list findresults = new arraylist();try session = hibernateutil.currentsession();tx = session.begintransaction();list allstudentinfo =

6、session.createquery("from com.px1987.sshwebcrm.dao.pobject.studentpo").list();findresults.addall(allstudentinfo);list allteacherinfo =session.createquery("from com.px1987.sshwebcrm.dao.pobject.teacherpo").list();findresults.addall(allteacherinfo); printallpersoninfo(findresults);

7、 mit();catch (hibernateexception he) log.error("在dofindallpersoninfo方法中出现了hibernateexception错误", he);throw he;finally hibernateutil.closesession();return true;private void printallpersoninfo (java.util.list allpersonlist) /利用该方法实现数据显示 java.util.iterator iterator= allpersonlist.iterator();

8、while(iterator.hasnext() abstractpersonpo oneperson=(abstractpersonpo)iterator.next(); if(oneperson instanceof studentpo) int departmentid=(studentpo)oneperson).getdepartment().getid(); string departmentname=(studentpo)oneperson).getdepartment().getdepname(); int studentid=(studentpo)oneperson).geti

9、d(); string studentname=(studentpo)oneperson).getpersonname(); int studentlevel=(studentpo)oneperson).getstudentlevel (); string studentmajor=(studentpo)oneperson).getstudentmajor(); system.out.print("departmentid="+departmentid+"t"); system.out.print("departmentname="+

10、departmentname+"t"); system.out.print("studentid="+studentid+"t"); system.out.print("studentname="+studentname+"t"); system.out.print("studentlevel="+studentlevel+"n"); system.out.print("studentmajor="+studentmajor+"

11、;n"); else int departmentid=(teacherpo)oneperson).getdepartment().getid(); string departmentname=(teacherpo)oneperson).getdepartment().getdepname(); int teacherid=(teacherpo)oneperson).getid(); string teachername=(teacherpo)oneperson).getpersonname(); string coursename=(teacherpo)oneperson).get

12、coursename(); float teachermonthsalary=(teacherpo)oneperson).getmonthsalary(); system.out.print("departmentid="+departmentid+"t"); system.out.print("departmentname="+departmentname+"t"); system.out.print("teacherid="+teacherid+"t"); system.

13、out.print("teachername="+teachername+"t"); system.out.print("teachermonthsalary="+teachermonthsalary+"n"); system.out.print("coursename="+coursename+"n"); 3、添加测试用例testderivedhibernatedaoimple包名称为com.px1987.hexample.dao.test,被测试类为derivedhibe

14、rnatedaoimple在测试用例中对该方法进行测试package com.px1987.hexample.dao.test;import junit.framework.assert;import org.junit.afterclass;import org.junit.beforeclass;import org.junit.test;import com.px1987.sshwebcrm.dao.imple.derivedhibernatedaoimple;import er.derivedhibernatedaointerfa

15、ce;public class testderivedhibernatedaoimple static derivedhibernatedaointerface onederivedhibernatedaobean=null;beforeclasspublic static void setupbeforeclass() throws exception onederivedhibernatedaobean=new derivedhibernatedaoimple();afterclasspublic static void teardownafterclass() throws except

16、ion onederivedhibernatedaobean=null;testpublic void testdofindallpersoninfo() boolean actualreturn=onederivedhibernatedaobean.dofindallpersoninfo();assert.asserttrue(actualreturn);4、执行测试用例将出现下面的结果1.1.2 体验hibernate中lazy技术如果将对department表的访问代码(也就是上面的黑体部分)除掉,然后再次执行,将发现没有对department表进行查询,因为hibernate缺省时是采

17、用 lazy加载的-只在真正需要该数据时,才加载所关联的数据。1.1.3 体验多态查询技术的应用将dao中的hql语句改变为下面的形式list allstudentinfo = session.createquery("from com.px1987.sshwebcrm.dao.pobject.studentpo").list();findresults.addall(allstudentinfo);list allteacherinfo =session.createquery("from com.px1987.sshwebcrm.dao.pobject.tea

18、cherpo").list();list allstudentinfo =session.createquery("from com.px1987.sshwebcrm.dao.pobject.abstractpersonpo").list();findresults.addall(allstudentinfo);观察执行的结果是否与前面的采用两条hql语句的效果相同。1.1.4 进一步完善本项目的实例1、在dao组件中再增加一个doinsertallpersoninfo方法以实现保存数据的功能2、修改derivedhibernatedaointerfacepack

19、age er;import org.hibernate.hibernateexception;public interface derivedhibernatedaointerface public boolean dofindallpersoninfo() throws hibernateexception;public boolean doinsertallpersoninfo() throws hibernateexception ;3、修改实现类代码示例public boolean doinsertallpersoninfo()

20、throws hibernateexception session session=null;transaction tx=null;try session = hibernateutil.currentsession();tx = session.begintransaction(); studentpo onestudent=new studentpo();onestudent.setpersonname("zhao");onestudent.setstudentlevel(4);onestudent.setstudentmajor("计算机应用")

21、; int departmentid=1;departmentpo onedepartment=(departmentpo)session.load(departmentpo.class,new integer(departmentid); onestudent.setdepartment(onedepartment); session.save(onestudent); mit();catch (hibernateexception he) log.error("在doinsertallpersoninfo方法中出现了hibernateexception错误", he);

22、throw he;finally hibernateutil.closesession();return true;4、修改测试用例package com.px1987.hexample.dao.test;import java.io.unsupportedencodingexception;import junit.framework.assert;import org.hibernate.hibernateexception;import org.junit.afterclass;import org.junit.beforeclass;import org.junit.test;import com.px1987.sshwebcrm.dao.imple.derivedhibernatedaoimple;import er.derivedhibernatedaoi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论