仓酷云

标题: JAVA网站制作之Eclipse疾速上手Hibernate--4. 承继映照... [打印本页]

作者: 第二个灵魂    时间: 2015-1-18 11:51
标题: JAVA网站制作之Eclipse疾速上手Hibernate--4. 承继映照...
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。承继上篇文章《Eclipse疾速上手Hibernate--4.承继映照(1)》中已谈了每一个类条理布局一个表(tableperclasshierarchy)的战略,这篇文章次要说的是每一个子类一个表(tablepersubclass)的战略。一些反复的部分这里就不说了,请参考上篇文章。1.创立项目·持续相沿上篇文章中所建的Java项目:InheritanceMapping。2.编写类文件·新建一个类,包名:javamxj.inheritance.two,类名:Animal。然后在天生的代码中增加变量,再使用“天生Getter和Setter”,详细体例同《Eclipse疾速上手Hibernate--1.进门实例》文章中的编纂User.java的体例一样。·这个类是父类,只是天生一个复杂的表。
Vehicle.java

/**Hibernate-承继映照(每一个子类一个表)*创立日期2005-4-9*@authorjavamxj(分享java康乐)*@linkBlog:htpp://javamxj.mblogger.cn*htpp://blog.csdn.net/javamxj/*/packagejavamxj.inheritance.two;/***@hibernate.class*/publicclassVehicle{privateLongid;privateStringname;/***@hibernate.id*column="ID"*generator-class="hilo"*unsaved-value="null"*/publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}/***@hibernate.property*length="24"*/publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}
·子类Car.javaCar.java

packagejavamxj.inheritance.two;/***@hibernate.joined-subclass*@hibernate.joined-subclass-key*column="id"*/publicclassCarextendsVehicle{privateStringseat;/***@hibernate.property*column="载客"*length="24"*/publicStringgetSeat(){returnseat;}publicvoidsetSeat(Stringseat){this.seat=seat;}}

·子类Truck.javaTruck.java

packagejavamxj.inheritance.two;/***@hibernate.joined-subclass*@hibernate.joined-subclass-key*column="id"*/publicclassTruckextendsVehicle{privateStringload;/***@hibernate.property*column="载重"*length="24"*/publicStringgetLoad(){returnload;}publicvoidsetLoad(Stringload){this.load=load;}}

·这两个子类都很复杂,注重增加的hibernate.joined-subclass的标志。·好了,这时候全部项目标布局以下:3.运转义务·双击“generate-hbm”义务,会发明在包中多了一个Vehicle.hbm.xml文件。假如没有,按F5键革新一下(这里倡议翻开Eclipse的“首选项”对话框,在“事情台”中勾选“主动革新事情空间”和“在构建之前主动保留”这两项,如许今后不必每次都革新了)。
Vehicle.hbm.xml


<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD2.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping><classname="javamxj.inheritance.two.Vehicle"dynamic-update="false"dynamic-insert="false"select-before-update="false"optimistic-lock="version"><idname="id"column="ID"type="java.lang.Long"unsaved-value="null"><generatorclass="hilo"><!--ToaddnonXDocletgeneratorparameters,createafilenamedhibernate-generator-params-Vehicle.xmlcontainingtheadditionalparametersandplaceitinyourmergedir.--></generator></id><propertyname="name"type="java.lang.String"update="true"insert="true"access="property"column="name"length="24"/><!--ToaddnonXDocletpropertymappings,createafilenamedhibernate-properties-Vehicle.xmlcontainingtheadditionalpropertiesandplaceitinyourmergedir.--><joined-subclassname="javamxj.inheritance.two.Truck"dynamic-update="false"dynamic-insert="false"><keycolumn="id"/><propertyname="load"type="java.lang.String"update="true"insert="true"access="property"column="载重"length="24"/></joined-subclass><joined-subclassname="javamxj.inheritance.two.Car"dynamic-update="false"dynamic-insert="false"><keycolumn="id"/><propertyname="seat"type="java.lang.String"update="true"insert="true"access="property"column="载客"length="24"/></joined-subclass></class></hibernate-mapping>

·重点是看看“joined-subclass”标签。·同时在hibernate.cfg.xml文件中会主动增加一个映照文件信息:<mappingresource="javamxj/inheritance/two/Vehicle.hbm.xml"/>·先运转MySQL,然后双击“schemaexport”义务,在项目根目次下,会更新“schema-export.sql”文件。翻开这个文件,会发明增加了以下一些语句。createtableCar(idbigintnotnull,载客varchar(24),primarykey(id))createtableTruck(idbigintnotnull,载重varchar(24),primarykey(id))createtableVehicle(IDbigintnotnull,namevarchar(24),primarykey(ID))·切换到数据库中,会发明已主动发生了数据表Car、Truck、Vehicle。·将数据表与映照文件Vehicle.hbm.xml对比看看,能够更好的了解每一个子类一个表的战略。4.测试程序·好了,在包javamxj.inheritance.two下新建一个Demo.java类,很复杂,前半部分是增加数据,后半部分是复杂的测试。
Demo.java

/**Hibernate-承继映照(每一个子类一个表)*创立日期2005-4-9*@authorjavamxj(分享java康乐)*@linkBlog:htpp://javamxj.mblogger.cn*htpp://blog.csdn.net/javamxj/*/packagejavamxj.inheritance.two;importjava.util.Iterator;importjava.util.List;importnet.sf.hibernate.HibernateException;importnet.sf.hibernate.Session;importnet.sf.hibernate.SessionFactory;importnet.sf.hibernate.Transaction;importnet.sf.hibernate.cfg.Configuration;publicclassDemo{publicstaticvoidmain(String[]args){try{newDemo();}catch(HibernateExceptionhe){he.printStackTrace();}}publicDemo()throwsHibernateException{SessionFactorysf=newConfiguration().configure().buildSessionFactory();Sessionsess=sf.openSession();Transactiontx=null;try{tx=sess.beginTransaction();Carcar=newCar();car.setName("奇瑞QQ");car.setSeat("4人");sess.save(car);Trucktruck=newTruck();truck.setName("一汽束缚");truck.setLoad("10吨");sess.save(truck);tx.commit();}catch(HibernateExceptione){if(tx!=null)tx.rollback();throwe;}finally{sess.close();}sess=sf.openSession();tx=null;try{tx=sess.beginTransaction();Listpets=sess.find("from"+Vehicle.class.getName());for(Iteratorit=pets.iterator();it.hasNext();){Vehiclevehicle=(Vehicle)it.next();System.out.println("车型"+vehicle.getName()+"itsclassis:"+vehicle.getClass().getName());}tx.commit();}catch(HibernateExceptione){if(tx!=null)tx.rollback();throwe;}finally{sess.close();}}}
·运转这个类,把持台输入以下:·同时,数据表中天生以下数据:小结:●长处:·与面向对象的观点的分歧性最好。对多态的撑持最好,关于对象所大概充任的脚色仅必要在响应的表中保留纪录。·易于修正基类和增添新的类。·这类映照几近有最好的空间勤俭性。独一的简单就是分外的OID,来毗连分歧的层级条理。●弱点:·数据库中存在大批的表。·会见数据的工夫较长。在读写相干的义务上,这类映照体例相称费资本,这个价值还跟着承继条理的增加而增年夜。·对报表的撑持较差,除非界说视图。参考:·HIBERNATE-切合Java习气的干系数据库耐久化(第8章)·Hibernate简化承继映照·MappingObjectstoRelationalDatabases:O/RMappingInDetail·Mappingobjectstorelationaldatabases下篇文章漫谈谈每一个详细类一个表的战略。
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,
作者: 再现理想    时间: 2015-1-21 16:18
是一种语言,用以产生「小应用程序(Applet(s))
作者: 冷月葬花魂    时间: 2015-1-30 18:46
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 因胸联盟    时间: 2015-2-3 12:14
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 谁可相欹    时间: 2015-2-6 10:23
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 兰色精灵    时间: 2015-2-7 20:16
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 小女巫    时间: 2015-2-23 09:41
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 小魔女    时间: 2015-3-7 06:51
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 山那边是海    时间: 2015-3-13 05:32
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 只想知道    时间: 2015-3-17 19:12
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 变相怪杰    时间: 2015-3-24 21:37
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 透明    时间: 2015-4-12 16:10
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 仓酷云    时间: 2015-4-15 21:29
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 爱飞    时间: 2015-4-16 03:46
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 老尸    时间: 2015-4-21 02:22
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 第二个灵魂    时间: 2015-5-4 17:46
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 精灵巫婆    时间: 2015-6-25 08:50
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 乐观    时间: 2015-6-26 14:03
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 灵魂腐蚀    时间: 2015-7-19 12:39
Java 编程语言的风格十分接近C、C++语言。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2