全国计算机二级java学习资料大全资料.doc

上传人:1595****071 文档编号:51794106 上传时间:2022-10-19 格式:DOC 页数:195 大小:346.50KB
返回 下载 相关 举报
全国计算机二级java学习资料大全资料.doc_第1页
第1页 / 共195页
全国计算机二级java学习资料大全资料.doc_第2页
第2页 / 共195页
点击查看更多>>
资源描述

《全国计算机二级java学习资料大全资料.doc》由会员分享,可在线阅读,更多相关《全国计算机二级java学习资料大全资料.doc(195页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Good is good, but better carries it.精益求精,善益求善。全国计算机二级java学习资料大全-Eclipse+JBoss+EJB3的SessionBean注释方法有时需要在SessionBean中初始化和释放一些资源。这些工作应该在SessionBean的PostConstruct和PreDestroy方法中进行。其中用PostConstruct注释的方法在SessionBean的构造方法调用之后以后EJB容器在处理完一些其他工作后调用。用PreDestroy注释的方法在SessionBean的对象实例被EJB容器销毁之前调用。除此之外,当有状态的Sessio

2、nBean存在一定时间未被调用时,EJB容器会将该SessionBean对象钝化(Passivate),也就是保存在硬盘中。当再次访问时,EJB容器会激法该SessionBean。在这两种情况下,EJB容器会分别调用SessionBean的PrePassivate和PostActivate方法。可以在PrePassivate方法中将sessionbean中的资源保存或释放,如打开的数据库连接等。在PostActivate方法中可以恢复相应的资源。如下面的代码所示:packageservice;importjava.util.ArrayList;importjava.util.List;impo

3、rtjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;importjavax.annotation.Resource;importjavax.ejb.PostActivate;importjavax.ejb.PrePassivate;importjavax.ejb.SessionContext;importjavax.ejb.Stateful;StatelesspublicclassShoppingCartBeanimplementsShoppingCartprivateListshoppingCart=newAr

4、rayList();ResourceprivateSessionContextsessionContext;publicShoppingCartBean()System.out.println(constructor:+sessionContext);PrePassivatepublicvoidMyPassivate()System.out.println(passivate);PostConstructpublicvoidinit()System.out.println(sessionContext.getInvokedBusinessInterface();PreDestroypublic

5、voiddestory()System.out.println(destory);PostActivatepublicvoidstart()System.out.println(start);OverridepublicvoidaddCommodity(Stringvalue)shoppingCart.add(value);OverridepublicListgetCommodity()returnshoppingCart;hibernate关系映射对象-关系映射基础1.对象间的基本关系关联关系:关联关系在设计模式中是被提倡优先使用于继承关系的。关联关系就是将一个对象做为别一个对象的成员,是一

6、种包含的关系。依赖关系:对与对象之间的方法的调用,不存在包含的关系。聚集关系:这个关系比较有趣,比如人的手和身体。如果身体不存在了,手也就不存在了。是一种整个与部分的关系。一般关系:就是继承关系。上边的这四种关系是对前一天的补充。对象-关系的映射基础没有涉及这些,而是单一对象通过hibernate与数据库的映射关系。2.持久化类的属性及访问方法首先回顾一下持久化,我们知道持久化层是从业务逻辑层中分离出来的专门用于数据库操作的这些部分。持久化层中的持久化类,便是我们之前早已学习的domain类。1).持久化类的访问者有两个,一是JAVA应用程序,二是hibernate。写:Java应用程序通过s

7、etter设置持久化对象的属性,hibernate通过getter获取持久化对象的属性并生成相应的SQL语句对表格进行操作。读:hibernate通过setter设置持久化对象的属性,Java应用程序通过getter获取持久化对象的属性。2).基本数据类型和包装类型通过前天的日志,我们知道关联对象的属性与表格的字段是通过property元素节点设置的:基本的type是hibernate的类型,我们在持久化类中定义的gender属性为int。定义为int类型会有什么弊端?比如,我们有个学生成绩表。如果某个学生没有参加某一学科的考试,但我们却使用了int类型,它的默认值为0,当查看学生成绩时,他到

8、底是考了0分还是没有考试?所以最好将持久化类中的gender属性定义为Integer,它的默认值为null。查询成绩时看到的是null,那么他肯定是没参加考试哦!(注意:数据库中的对应字段应该为字符型)3).hibernate访问持久化类属性的策略Hibernate通过name指定的值访问持久化对象。Hibernate通过name值,反射持久化对象的对方法。比如,name的值为gender。Hibernate会直接反射持久化对象的getGender和setGender方法。所以我们必须保证持久化对象中有对应的方法。这是因为property有一个access属性,它的默认值为property。如

9、果指定access的值为field,则hibernate直接根据name值反射持久化对象的属性。此时,我们必须保证持久化对象中有对应的属性。4).在持久化类的方法中加入程序逻辑通过3)我们知道,如果access的值为property,hibernate直接反射持久化对象的方法。在这个方法中我们就可以加入程序逻辑。老徐举了一个生动的例子,比如Customer类中有firstname和lastname两个属性。但我们只想让hibernate通过getName方法获得一个firstname+lastname的字符串,此时我们就可以在getName方法中将firstname与lastname两个属性值

10、合并为一个中间使用“.”连接的字符串返回。使用hibernate获取数据表中的数据时,hibernate会调用持久化对象的setName方法。我们在这个方法中将传递进来的参数使用“.”分隔,然后分别设置到firestname和lastname属性中。5).hibernate的hql语句我们在使用JDBC、DBUtil时使用的都是SQL语句。但hibernate比较特殊,它使用的是自己的一套东西叫hql语句。比如我们调用session.find方法,传递的hql语句为:fromcustomerascwherec.name=itcast其中的customer指向持久化对象的映射文件,name指向持

11、久化对象的映射文件中的property元素的name属性。此时需要注意access属性的值。6).设置派生属性Property元素中,有一个formula属性。它的值是一个sql表达式,hibernate将根据此表达式计算的值设置到持久化对象的属性上。比如,我们要统计订单表中的总计:Hibernate一对多单向关系1.数据库schemaTeachers表:createtableTEACHERS(IDNUMBER(10)notnull,TEACHERNAMEVARCHAR2(15)altertableTEACHERSaddconstraintDEREprimarykey(ID)Students表

12、:createtableSTUDENTS(IDNUMBER(10)notnull,STUDENTNAMEVARCHAR2(15),TEACHER_IDNUMBER(10)altertableSTUDENTSaddconstraintREREprimarykey(ID)altertableSTUDENTSaddconstraintFFFforeignkey(TEACHER_ID)referencesTEACHERS(ID);2.Teacher.java和Student.javaTeacher.javapackagemypack;publicclassTeacher/教师idprivateLong

13、id;/教师名称privateStringteacherName;/*缺省构造函数*/publicTeacher()/*得到教师id*returnLong教师id*/publicLonggetId()returnid;/*设置教师id*paramidLong教师id*/publicvoidsetId(Longid)this.id=id;/*得到教师名称*returnString教师名称*/publicStringgetTeacherName()returnteacherName;/*设置教师名称*paramteacherNameString教师名称*/publicvoidsetTeacherN

14、ame(StringteacherName)this.teacherName=teacherName;/*构造函数*paramteacherNameString*/publicTeacher(StringteacherName)this.teacherName=teacherName;Student.javapackagemypack;publicclassStudent/学生idprivateLongid;/学生名称privateStringstudentName;/教师类privateTeacherteacher;/*缺省构造函数*/publicStudent()/*得到学生id*retu

15、rnLong学生id*/publicLonggetId()returnid;/*设置学生id*paramidLong学生id*/publicvoidsetId(Longid)this.id=id;/*得到学生名称*returnString学生名称*/publicStringgetStudentName()returnstudentName;/*设置学生名称*paramstudentNameString学生名称*/publicvoidsetStudentName(StringstudentName)this.studentName=studentName;/*得到教师对象*returnTeach

16、er教师对象*/publicTeachergetTeacher()returnteacher;/*设置教师对象*paramteacherTeacher教师对象*/publicvoidsetTeacher(Teacherteacher)this.teacher=teacher;/*构造函数*paramstringString*paramteacherTeacher*/publicStudent(StringstudentName,Teacherteacher)this.studentName=studentName;this.teacher=teacher;3.hibernate.propert

17、ies#Oraclehibernate.dialectnet.sf.hibernate.dialect.Oracle9Dialecthibernate.dialectnet.sf.hibernate.dialect.OracleDialecthibernate.connection.driver_classoracle.jdbc.driver.OracleDriverhibernate.connection.usernamejbcmhibernate.connection.passwordjbcmhibernate.connection.urljdbc:oracle:thin:localhos

18、t:1521:wsy4.Teacher.hbm.xml和Student.hbm.xmlTeacher.hbm.xml!DOCTYPEhibernate-mappingPUBLIC-/Hibernate/HibernateMappingDTD2.0/ENStudent.hbm.xml!DOCTYPEhibernate-mappingPUBLIC-/Hibernate/HibernateMappingDTD2.0/EN5.数据库操作类BusinessService.javapackagemypack;importnet.sf.hibernate.*;importnet.sf.hibernate.c

19、fg.Configuration;importjava.util.*;publicclassBusinessService/session工厂类publicstaticSessionFactorysessionFactory;/实始化session工厂statictry/建立配置类,添加Student类和Teacher类Configurationconfig=newConfiguration();config.addClass(Student.class).addClass(Teacher.class);/得到sessionFactory对象sessionFactory=config.buil

20、dSessionFactory();catch(Exceptione)e.printStackTrace();/*通过学生类,查找教师类*paramstudentStudent*throwsException*returnList*/publicListfindTeacherByStudent(Studentstudent)throwsExceptionSessionsession=sessionFactory.openSession();Transactiontx=null;trytx=session.beginTransaction();Listorders=(List)session.f

21、ind(fromStudentasowhereo.teacher.id=+student.getId();mit();returnorders;catch(Exceptione)if(tx!=null)tx.rollback();throwe;finallysession.close();/*查找指定id的学生类*paramstudent_idlong*throwsException*returnStudent*/publicStudentfindStudent(longstudent_id)throwsExceptionSessionsession=sessionFactory.openSe

22、ssion();Transactiontx=null;trytx=session.beginTransaction();Studentstudent=(Student)session.load(Student.class,newLong(student_id);mit();returnstudent;catch(Exceptione)if(tx!=null)/发生错误,回滚tx.rollback();throwe;finally/没有错误,关闭sessionsession.close();/*级连保存Teacher对象和Student对象*throwsException*/publicvoid

23、saveTeacherAndStudentWithCascade()throwsExceptionSessionsession=sessionFactory.openSession();Transactiontx=null;trytx=session.beginTransaction();Teacherteacher=newTeacher(myTeacher);Studentstudent1=newStudent(student1,teacher);Studentstudent2=newStudent(student2,teacher);session.save(student1);sessi

24、on.save(student2);mit();catch(Exceptione)if(tx!=null)/发生错误,回滚tx.rollback();e.printStackTrace();finally/没有错误,关闭sessionsession.close();/*保存教师和学生对象*throwsException*/publicvoidsaveTeacherAndStudent()throwsExceptionSessionsession=sessionFactory.openSession();Transactiontx=null;trytx=session.beginTransact

25、ion();Teacherteacher=newTeacher(teacher1);session.save(teacher);Studentstudent1=newStudent(student001,teacher);Studentstudent2=newStudent(student002,teacher);session.save(student1);session.save(student2);/提交事务mit();catch(Exceptione)if(tx!=null)/发生错误,回滚tx.rollback();throwe;finally/没有错误,关闭sessionsessi

26、on.close();/*输出学生对象集合*paramstudentsList*/publicvoidprintStudents(Liststudents)for(Iteratorit=students.iterator();it.hasNext();)Studentstudent=(Student)it.next();System.out.println(OrderNumberof+student.getTeacher().getTeacherName()+:+student.getStudentName();/*测试方法*throwsException*/publicvoidtest()t

27、hrowsExceptionsaveTeacherAndStudent();/saveTeacherAndStudentWithCascade();/Studentstudent=findStudent(1);/Liststudents=findTeacherByStudent(student);/printStudents(students);publicstaticvoidmain(Stringargs)throwsExceptionnewBusinessService().test();sessionFactory.close();目录结构示意:ClassesHibernate.prop

28、erty/mypackTeacher.javaStudent.javaBusinessService.javaTeacher.hbm.xmlStudent.hbm.xmlJ2me中实现StringTokenizer的功能由于JavaME中没有StringTokenizer,而我们又经常使用StringTokenizer的功能!而事实上,在rms的读取数据过程中经常会用到字符串的分割。这样没有办法!我们就只好编写一个类,代码如下:ps:编译一下,然后引入编译器!写个实例!运行可见结果!但需注意此类中方法的使用!importjava.util.*;publicclassStringTokenize

29、rimplementsEnumerationprivatevoidsetMaxDelimChar()if(delimiters=null)maxDelimChar=0;return;charc=0;for(inti=0;idelimiters.length();i+)charc1=delimiters.charAt(i);if(cc1)c=c1;maxDelimChar=c;publicStringTokenizer(Strings,Strings1,booleanflag)currentPosition=0;newPosition=-1;delimsChanged=false;str=s;m

30、axPosition=s.length();delimiters=s1;retDelims=flag;setMaxDelimChar();publicStringTokenizer(Strings,Strings1)this(s,s1,false);publicStringTokenizer(Strings)this(s,tnrf,false);privateintskipDelimiters(inti)if(delimiters=null)thrownewNullPointerException();intj;for(j=i;!retDelims&jmaxDelimChar|delimite

31、rs.indexOf(c)0)break;returnj;privateintscanToken(inti)intj;for(j=i;jmaxPosition;j+)charc=str.charAt(j);if(c=0)break;if(retDelims&i=j)charc1=str.charAt(j);if(c1=0)j+;returnj;publicbooleanhasMoreTokens()newPosition=skipDelimiters(currentPosition);returnnewPositionmaxPosition;publicStringnextToken()cur

32、rentPosition=newPosition=maxPosition)thrownewNoSuchElementException();elseinti=currentPosition;currentPosition=scanToken(currentPosition);returnstr.substring(i,currentPosition);publicStringnextToken(Strings)delimiters=s;delimsChanged=true;setMaxDelimChar();returnnextToken();publicbooleanhasMoreEleme

33、nts()returnhasMoreTokens();publicObjectnextElement()returnnextToken();publicintcountTokens()inti=0;for(intj=currentPosition;j=maxPosition)break;j=scanToken(j);i+;returni;privateintcurrentPosition;privateintnewPosition;privateintmaxPosition;privateStringstr;privateStringdelimiters;privatebooleanretDe

34、lims;privatebooleandelimsChanged;privatecharmaxDelimChar;JavaIO读取文件中文乱码问题1、JAVA读取文件,避免中文乱码。/*读取文件内容*paramfilePathAndNameString读取文件路径*returnString文件中的内容*/publicstaticStringreadFile(StringfilePathAndName)StringfileContent=;tryFilef=newFile(filePathAndName);if(f.isFile()&f.exists()InputStreamReaderread

35、=newInputStreamReader(newFileInputStream(f),UTF-8);BufferedReaderreader=newBufferedReader(read);Stringline;while(line=reader.readLine()!=null)fileContent+=line;read.close();catch(Exceptione)System.out.println(读取文件内容操作出错);e.printStackTrace();returnfileContent;2、JAVA写入文件,避免中文乱码。/*写文件*paramfilePathAndN

36、ameString写文件路径*paramfileContentString需要写入的内容*/publicstaticvoidwriteFile(StringfilePathAndName,StringfileContent)tryFilef=newFile(filePathAndName);if(!f.exists()f.createNewFile();OutputStreamWriterwrite=newOutputStreamWriter(newFileOutputStream(f),UTF-8);BufferedWriterwriter=newBufferedWriter(write);/PrintWrit

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com