欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

清华ITJAVAEE教学PPT.ppt

  • 资源ID:3419189       资源大小:777.50KB        全文页数:27页
  • 资源格式: PPT        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

清华ITJAVAEE教学PPT.ppt

第十章,创建Hibernate应用,课程目标,创建Hibernate主配置文件创建Hibernate映射文件利用HibernateAPI访问数据库使用Hibernate转换工具使用Hibernate实现数据的添加、删除、修改、查询等功能,体验项目,程序实现的功能:该程序通过Hibernate实现保存对象、删除和查询对象等功能。程序运行的过程如下所示:(1)启动服务器后,访问添加数据页面,如图10-1所示:,图10-1添加数据页面,(2)分别添加两条不同的数据,由于我们采用的是Struts框架,当添加成功后,视图仍将转发至添加数据页面。又由于在该页面中调用了查询表数据的Bean,所以将在此页面显示数据库中所有的信息,如图10-2所示:,图10-2添加成功并将数据返回给客户端,(3)该程序实现了删除数据的功能,可以一次性删除多条数据。此时我们选择删除“Lily”的信息,如图10-3所示:,图10-3删除数据,(4)当重复添加相同的账号,或数据长度过长时,则执行失败,从而视图将转发至错误页面。如图10-4所示:,图10-4操作失败页面,Hibernate的配置文件,Hibernate的配置文件有两种形式,一种是xml格式的文件,默认的名称为“hibernate.cfg.xml”。另一种是“键=值”形式的属性文件,以“properties”为后缀,默认的名称为“hibernate.properties”。这些配置文件都应存放于Web应用中的WEB-INFclasses目录下。Hibernate可以从它的配置文件中读取与数据库连接的相关信息。,truenet.sf.hibernate.dialect.SQLServerDialectcom.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver:/localhost:1433;databasename=testsa,hibernate.cfg.xml与hibernate.properties文件介绍,hibernate.cfg.xml文件的根元素,这是hibernate.cfg.xml基本配置文件,元素是可以同时存在多个,在程序中,创建一个configuration实例,代码如下:,Configurationconf=newConfiguration();conf.configure();,新建一个Configuration实例时,Hibernate会在classPath中查找hibernate.properties文件。如果该文件存在,则将该文件内容加载到一个Properties的实例GLOBAL_PROPERTIES中,如果该文件不存在,将打印信息:hibernate.propertiesnotfound如果hibernate.properties文件存在,系统还会验证一下这个文件配置的有效性,对于一些已经不支持的配置参数,系统将打印警告信息。,configure()方法默认会在classpath下寻找hibernate.cfg.xml文件。如果没有找到该文件,系统会打印如下信息并抛出HibernateException异常:hibernate.cfg.xmlnotfound如果找到该文件,configure()方法会首先访问元素,并获取该元素的name属性。如果非空,将用这个配置的值来覆盖hibernate.properties文件中hibernate.session_factory_name的配置值。,接下来configure()方法将访问的子元素。首先将使用所有的元素配置信息。在元素中,我们就可以配置它的“name”属性来获得访问数据库所需要的驱动、URL、数据库登录的用户名和密码等信息。下面我们来看看“name”属性所对应值的介绍。,“show_sql”,为true时,表示正在执行的程序。会在控制台打印出所执行的SQL语句,为false时就不会打印。一般在程序的开发阶段,都将其设置为true,以便观察程序的运行情况。“dialect”,指定HibernateSQL的一种方式。例如,如果使用MySQL数据库,设置为“net.sf.hibernate.dialect.MySQLDialect”。“connection.driver_class”,表示配置访问数据库的驱动。“connection.url”,表示配置访问数据库连接的URL。“connection.username”,表示配置登录数据库的用户名。“connection.password”,表示配置登录数据库的密码,上例的配置表示密码为空。,Hibernate能访问多种关系型的数据库,如SQLServer、MySQL、Oracle、Sybase等等。对于hibernate.properties文件来说,它完成的功能和hibernate.cfg.xml文件相同。当读取完元素的信息后,configure()方法将访问以下元素所配置的信息:,其中元素是必不可少的,必须通过配置元素的resource属性,configure()才能访问到我们定义的Java对象和关系数据库表的映射文件(*.hbm.xml)。在这里需要注意一点,在hibernate.properties文件中,不需要配置被映射的类文件,而是通过实例化Configuration后调用它的addClass()方法来访问类文件,,创建持久化类,在创建映射文件前,应该创建一个持久化类。持久化类是指其实例需要被Hibernate持久化到数据库中的类。持久化类通常是域模型中的实体域类。持久化类需符合JavaBean的标准,包含一些属性,以及与之相对应的setter和getter方法。其中属性一般修饰为private,方法修饰为public。,在创建持久化类的时候,有些地方是我们必须要注意的。程序运行时Hibernate运用的是Java的反射机制,将调用java.lang.reflect.Constructor.newInstance()方法来构造持久化实例,所有持久化类必须提供一个不带参数的默认构造方法。另外,对属性进行操作的setter与getter方法的书写都要符合规范,set与get后面必须紧跟属性名,且属性名字的第一个字母大写,如getName()。如果set与get后面的属性名全小写或全大写,那么会导致Hibernate在运行时抛出异常。,接下来为创建的持久化类建立一个关系数据库表,以用来保存数据。,由于Hibernate是通过xml格式的文件来指定对象与关系数据之间的映射,所以需要为持久化类(如Users)建立一个xml格式的映射文件,并将其命名为:类名.hbm.xml。然后将该文件存放于应用中的WEB-INFclasses目录下。如以下代码:,创建映射文件(*.hbm.xml),在hibernate.cfg.xml文件中可以配置元素的resource属性来指定映射文件,参考代码如下:,1DTD,配置映射文件时,需要遵循它对应的DTD文件格式。每一个xml文件都有其各自的DTD文件。Hibernate的对象-关系映射文件所遵循的DTD文件,可以去,元素中存在子元素,hibernate-mapping-2.0.dtd文件对元素有如下定义:,2元素,按照hibernate-mapping-2.0.dtd的定义,在元素中必须存在子元素,且子元素只能出现一次。同时子元素可以出现多次,但是按照DTD的定义顺序,子元素必须在子元素之前。元素用来设置对象标识符,它有三个属性需要配置,分别如下:,name:与对应持久化类中的id属性名一致。type:与对应持久化类中的id属性的数据类型一致。column:与对应关系数据库表中的字段名一致。,元素有一个子元素,元素用来设定标识符生成器。Hibernate提供了标识符生成器接口:net.sf.hibernate.id.IdentifierGenerator接口,并提供了多种内置的实现。例如以上接口的缩写名为“identity”。代码书写可以写成如下格式:,3元素,元素包括多个属性,主要为以下几个:,name属性:指定持久化类的属性名称。type属性:指定Hibernate映射类型。Hibernate映射类型是Java类型与SQL类型的桥梁。例如当SQL类型为varchar时,那么Hibernate映射类型为java.lang.String类型。column属性:指定与类的属性映射的关系数据库表的字段名,该名称不区分大小写。not-null属性:为true时,表示name属性不允许为null;当为false时,表示允许为null,默认为false。length属性:指定类属性存储的数据长度。,利用HibernateAPI访问数据库,Hibernate的初始化,首先创建一个Configuration类的实例,然后调用Configuration对象的configure()方法,此时Hibernate会读取默认文件路径下的配置文件,并将配置文件的信息加载至内存中。如当主配置文件名称不是默认的名称时,譬如为“a.xml”,可以作为参数传入configure()方法中。接下来调用Configuration对象的buildSessionFactory()方法以创建SessionFactory类的实例,并把Configuration对象所包含的所有配置信息拷贝至SessionFactory对象的缓存中。如以下代码:,Configurationconf=newConfiguration();conf.configure();/conf.configure("a.xml");SessionFactoryfact=conf.buildSessionFactory();,SessionFactory对象是一个重量级的对象,如果在应用中只有一个数据存储源,只需要创建一个SessionFactory实例,如果创建多个SessionFactory实例,将会消耗掉很大的内存空间。,访问Hibernate的Session接口,Hibernate初始化结束后,就可以调用SessionFactory实例的openSession()方法来获得Session实例,通过Session实例,可以对数据库进行各种操作,如以下代码片段将一个Java对象保存至数据库中。,Transactiontran;trytran=session.beginTransaction();session.save(users);/users代表一个对象mit();catch(Exceptione)if(tran!=null)tran.rollback();finallysession.close();,Session实例的删除、查询、更新、加载等方法的演示,1delete()方法演示intid=1;Transactiontran=session.beginTransaction();session.delete("fromUsersasuwhereu.id="+id);mit();,2find()方法演示Stringname=null;Stringpassword=null;Transactiontran=session.beginTransaction();Listlist=session.find("fromUsersasu");for(inti=0;i<list.size();i+)Usersusers=(Users)list.get(i);name=users.getName();password=users.getPassword();,3update()方法的演示intid=1;Transactiontran=session.beginTransaction();Listlist=session.find("fromUsersasuwhereu.uid="+id);for(inti=0;i<list.size();i+)Usersusers=(Users)list.get(i);users.setPassword("abc123");session.update(users);mit();mit();,4.load()方法演示intid=1;Transactiontran=session.beginTransaction();Usersusers=(Users)session.load(Users.class,id);users.setPassword("abc123");mit();,为了提高开发效率,Hibernate提供了一些实用工具,它们用于在映射文件、Java源文件以及数据库Schema之间自动进行转换。下面来看看这些工具的转换作用:hbm2java:根据映射文件自动生成Java源文件。hbm2ddl:根据映射文件自动生成数据库Schema。XDoclet:根据带有Doclet标记的Java源文件生成映射文件。Middlegen:根据数据库Schema自动生成映射文件。,Hibernate提供的转换工具,编写映射文件,hbm2java和hbm2ddl工具是根据映射文件来自动生成Java源文件或数据库的,所以需要先编写对象-关系的映射文件。,元素用于精度的控制Java源代码中的内容,它具有以下属性:,class-description:指定描述类的javaDoc。field-description:指定描述类属性的javaDoc。interface:如果为true,表示生成接口而非类,默认为false。implements:指定类所实现的接口。extends:指定类继承的父类名。generated-class:重新指定生成的类名。scope-class:指定类的修饰符,默认为public。scope-set:指定set方法的修饰符,默认为public。scope-get:指定get方法的修饰符,默认为public。scope-field:指定类的属性修饰符,默认为private。use-in-toString:如果为true,表示在tostring方法中包含此属性。gen-property:如果为false不会在java类中生成此属性,默认为true。finder-method:指定find方法名。,元素用于精度的控制表的定义,它具有以下属性:,name:指定字段名称。length:指定字段长度。not-null:当为true时不允许为空,默认为false。unique:当为true时该字段有唯一约束,默认为false。index:给一个或多个字段建立索引。unique-key:为多个字段设定唯一约束。foreign-key:为外键命名。sql-type:设定字段SQL的类型。check:设定SQL检查约束。,运行hbm2java和hbm2ddl工具,将“hibernate.cfg.xml”配置文件拷贝至src目录下。我们将采用ANT工具来运行它。在项目的根目录下建立一个“build.xml”文件,这个文件含有四个任务,这里会用到“generate-code”、“schemaexport”两个任务。然后运行“build.xml”文件,就可以在src目录下生成User.java类文件了。由于篇幅有限,就不列出Java文件的内容了。同时在项目根目录下,也会产生一个“schema-export.sql”文件,该文件是在“build.xml”中设定的:,droptableifexistsINFOcreatetableINFO(idintnotnullauto_increment,usernamevarchar(10)notnull,phonevarchar(11),setvarchar(2),addressvarchar(100),emailvarchar(30),primarykey(id),实践项目,一、程序的实现要求如下:(1)保存对象至数据库。(2)从数据库中删除对象。(3)从数据库中查询对象。,二、实现步骤,(1)以Struts+Hibernate形式来实现该项目。当用户点击“添加”按钮时,在AddAction类中实现对象的持久化。(2)用户成功保存数据后,将在页面中显示出所有已经保存的信息,并在每条信息前加上一个复选框,用来选择需要删除的数据,编写代码实现该功能bean。(3)当用户选择某条数据或多条数据后,点击“删除”按钮,在DeleteAction类中完成删除的操作。(4)最后配置Hibernate的主配置文件和映射的持久化类文件。,本章总结,创建Hibernate主配置文件创建Hibernate映射文件利用HibernateAPI访问数据库使用Hibernate转换工具使用Hibernate实现数据的添加、删除、修改、查询等功能,

注意事项

本文(清华ITJAVAEE教学PPT.ppt)为本站会员(zhu****ei)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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