仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2540|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Eclipse疾速上手Hibernate--4. 承继映照...

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:51:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
诸如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:22 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-30 18:46:20 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
因胸联盟 该用户已被删除
地板
发表于 2015-2-3 12:14:53 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
谁可相欹 该用户已被删除
5#
发表于 2015-2-6 10:23:55 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
兰色精灵 该用户已被删除
6#
发表于 2015-2-7 20:16:12 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
小女巫 该用户已被删除
7#
发表于 2015-2-23 09:41:28 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
小魔女 该用户已被删除
8#
发表于 2015-3-7 06:51:36 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
山那边是海 该用户已被删除
9#
发表于 2015-3-13 05:32:19 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
只想知道 该用户已被删除
10#
发表于 2015-3-17 19:12:07 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
变相怪杰 该用户已被删除
11#
发表于 2015-3-24 21:37:37 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
透明 该用户已被删除
12#
发表于 2015-4-12 16:10:33 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
13#
发表于 2015-4-15 21:29:01 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
爱飞 该用户已被删除
14#
发表于 2015-4-16 03:46:13 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
老尸 该用户已被删除
15#
发表于 2015-4-21 02:22:54 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
第二个灵魂 该用户已被删除
16#
 楼主| 发表于 2015-5-4 17:46:32 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
精灵巫婆 该用户已被删除
17#
发表于 2015-6-25 08:50:30 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
乐观 该用户已被删除
18#
发表于 2015-6-26 14:03:40 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
灵魂腐蚀 该用户已被删除
19#
发表于 2015-7-19 12:39:43 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-20 12:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表