清华ITJAVAEE教学PPT.ppt

上传人:M****1 文档编号:568437618 上传时间:2024-07-24 格式:PPT 页数:27 大小:777.50KB
返回 下载 相关 举报
清华ITJAVAEE教学PPT.ppt_第1页
第1页 / 共27页
清华ITJAVAEE教学PPT.ppt_第2页
第2页 / 共27页
清华ITJAVAEE教学PPT.ppt_第3页
第3页 / 共27页
清华ITJAVAEE教学PPT.ppt_第4页
第4页 / 共27页
清华ITJAVAEE教学PPT.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《清华ITJAVAEE教学PPT.ppt》由会员分享,可在线阅读,更多相关《清华ITJAVAEE教学PPT.ppt(27页珍藏版)》请在金锄头文库上搜索。

1、第十章第十章创建创建HibernateHibernate应用应用 课程目标课程目标q创建创建Hibernate主配置文件主配置文件 q创建创建Hibernate映射文件映射文件 q利用利用Hibernate API访问数据库访问数据库 q使用使用Hibernate转换工具转换工具 q使用使用Hibernate实现数据的添加、删除、修实现数据的添加、删除、修改、查询等功能改、查询等功能 体验项目体验项目 程序实现的功能:该程序通过程序实现的功能:该程序通过Hibernate实现保存对象、删除和查询对实现保存对象、删除和查询对象等功能。象等功能。 程序运行的过程如下所示:程序运行的过程如下所示:

2、(1)启动服务器后,访问添加数据页面,如图)启动服务器后,访问添加数据页面,如图10-1所示:所示: 图10-1 添加数据页面 (2)分别添加两条不同的数据,由于我们采用的是)分别添加两条不同的数据,由于我们采用的是Struts框架,当添框架,当添加成功后,视图仍将转发至添加数据页面。又由于在该页面中调用了查询加成功后,视图仍将转发至添加数据页面。又由于在该页面中调用了查询表数据的表数据的Bean,所以将在此页面显示数据库中所有的信息,如图,所以将在此页面显示数据库中所有的信息,如图10-2所示:所示: 图10-2 添加成功并将数据返回给客户端 (3)该程序实现了删除数据的功能,可以一次性删除

3、多条数据。此时我们)该程序实现了删除数据的功能,可以一次性删除多条数据。此时我们选择删除选择删除“Lily”的信息,如图的信息,如图10-3所示:所示: 图10-3 删除数据 (4)当重复添加相同的账号,或数据长度过长时,则执行失败,从而视图)当重复添加相同的账号,或数据长度过长时,则执行失败,从而视图将转发至错误页面。如图将转发至错误页面。如图10-4所示:所示: 图10-4操作失败页面 Hibernate 的配置文件的配置文件 Hibernate的配置文件有两种形式,一种是的配置文件有两种形式,一种是xml格式的文格式的文件,默认的名称为件,默认的名称为“hibernate.cfg.xml

4、”。另一种是。另一种是“键键=值值”形式的属性文件,以形式的属性文件,以“properties”为后缀,默认的名为后缀,默认的名称为称为“hibernate.properties”。这些配置文件都应存放于。这些配置文件都应存放于Web应用中的应用中的WEB-INFclasses目录下。目录下。Hibernate可以从它可以从它的配置文件中读取与数据库连接的相关信息。的配置文件中读取与数据库连接的相关信息。 true net.sf.hibernate.dialect.SQLServerDialect com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc

5、:microsoft:sqlserver:/localhost:1433;databasename=test sa hibernate.cfg.xml与与hibernate.properties文件介绍文件介绍 hibernate.cfg.xml文件的根元素文件的根元素 这是这是hibernate.cfg.xml基本配置文件基本配置文件元素是可以同时存在多个元素是可以同时存在多个 在程序中,创建一个在程序中,创建一个configuration实例,代码如下:实例,代码如下:Configuration conf = new Configuration();conf.configure(); 新建

6、一个新建一个Configuration实例时,实例时,Hibernate会在会在classPath中查找中查找hibernate.properties文件。文件。 如果该文件存在,则将该文件内容加载到一个如果该文件存在,则将该文件内容加载到一个Properties的实例的实例GLOBAL_PROPERTIES中,如果该文件不存在,将打印信息:中,如果该文件不存在,将打印信息:hibernate.properties not found 如果如果hibernate.properties文件存在,系统还会验证一下这个文件配置文件存在,系统还会验证一下这个文件配置的有效性,对于一些已经不支持的配置参

7、数,系统将打印警告信息。的有效性,对于一些已经不支持的配置参数,系统将打印警告信息。 configure()方法默认会在方法默认会在classpath下寻找下寻找hibernate.cfg.xml文件。文件。 如果没有找到该文件,系统会打印如下信息并抛出如果没有找到该文件,系统会打印如下信息并抛出HibernateException异常:异常:hibernate.cfg.xml not found 如果找到该文件,如果找到该文件,configure()方法会首先访问方法会首先访问元素,元素,并获取该元素的并获取该元素的name属性。如果非空,将用这个配置的值来覆盖属性。如果非空,将用这个配置的

8、值来覆盖hibernate.properties文件中文件中hibernate.session_factory_name的配置值。的配置值。 接下来接下来configure()方法将访问方法将访问的子元素。首先将使用所有的子元素。首先将使用所有的的元素配置信息。在元素配置信息。在元素中,我们就可以配置它的元素中,我们就可以配置它的“name”属性来获得访问数据库所需要的驱动、属性来获得访问数据库所需要的驱动、URL、数据库登录的用户名、数据库登录的用户名和密码等信息。下面我们来看看和密码等信息。下面我们来看看“name”属性所对应值的介绍。属性所对应值的介绍。 “show_sql”,为true

9、时,表示正在执行的程序。会在控制台打印出所执行的SQL语句,为false时就不会打印。一般在程序的开发阶段,都将其设置为true,以便观察程序的运行情况。 “dialect”,指定Hibernate SQL的一种方式。例如,如果使用MySQL数据库,设置为“net.sf.hibernate.dialect.MySQLDialect”。 “connection.driver_class”,表示配置访问数据库的驱动。 “connection.url”,表示配置访问数据库连接的URL。 “connection.username”,表示配置登录数据库的用户名。 “connection.password

10、”,表示配置登录数据库的密码,上例的配置表示密码为空。 Hibernate能访问多种关系型的数据库,如能访问多种关系型的数据库,如SQL Server、MySQL、Oracle、Sybase等等。对于等等。对于hibernate.properties文件来说,它完成的功能和文件来说,它完成的功能和hibernate.cfg.xml文件相同。文件相同。 当读取完当读取完元素的信息后,元素的信息后,configure()方法将访问以下元素所方法将访问以下元素所配置的信息:配置的信息: 其中其中元素是必不可少的,必须通过配置元素是必不可少的,必须通过配置元素的元素的resource属性,属性,con

11、figure()才能访问到我们定义的才能访问到我们定义的Java对象和关系数据库表的对象和关系数据库表的映射文件(映射文件(*.hbm.xml)。在这里需要注意一点,在)。在这里需要注意一点,在hibernate.properties文件文件中,不需要配置被映射的类文件,而是通过实例化中,不需要配置被映射的类文件,而是通过实例化Configuration后调用它的后调用它的addClass()方法来访问类文件,方法来访问类文件, 创建持久化类创建持久化类 在创建映射文件前,应该创建一个持久化类。持久化类是指其实例需要在创建映射文件前,应该创建一个持久化类。持久化类是指其实例需要被被Hibern

12、ate持久化到数据库中的类。持久化类通常是域模型中的实体域类。持久化到数据库中的类。持久化类通常是域模型中的实体域类。持久化类需符合持久化类需符合JavaBean的标准,包含一些属性,以及与之相对应的的标准,包含一些属性,以及与之相对应的setter和和getter方法。其中属性一般修饰为方法。其中属性一般修饰为private,方法修饰为,方法修饰为public。 在创建持久化类的时候,有些地方是我们必须要注意的。程序运行时在创建持久化类的时候,有些地方是我们必须要注意的。程序运行时Hibernate运用的是运用的是Java 的反射机制,将调用的反射机制,将调用java.lang.reflec

13、t.Constructor.newInstance()方法来构造持久化实例,所有持久化类必须提供一个不带参方法来构造持久化实例,所有持久化类必须提供一个不带参数的默认构造方法。另外,对属性进行操作的数的默认构造方法。另外,对属性进行操作的setter与与getter方法的书写都要方法的书写都要符合规范,符合规范,set与与get后面必须紧跟属性名,且属性名字的第一个字母大写,后面必须紧跟属性名,且属性名字的第一个字母大写,如如getName()。如果。如果set与与get后面的属性名全小写或全大写,那么会导致后面的属性名全小写或全大写,那么会导致Hibernate在运行时抛出异常。在运行时抛出

14、异常。 接下来为创建的持久化类建立一个关系数据库表,以用来保存数据。接下来为创建的持久化类建立一个关系数据库表,以用来保存数据。 由于由于Hibernate是通过是通过xml格式的文件来指定对象与关系数据之间的映射,格式的文件来指定对象与关系数据之间的映射,所以需要为持久化类(如所以需要为持久化类(如Users)建立一个)建立一个xml格式的映射文件,并将其命名格式的映射文件,并将其命名为:为:类名类名.hbm.xml。然后将该文件存放于应用中的。然后将该文件存放于应用中的WEB-INFclasses目录下。目录下。 如以下代码:如以下代码: 创建映射文件(创建映射文件(*.hbm.xml)

15、在hibernate.cfg.xml文件中可以配置元素的resource 属性来指定映射文件,参考代码如下:1DTD 配置映射文件时,需要遵循它对应的配置映射文件时,需要遵循它对应的DTD文件格式。每一个文件格式。每一个xml文件都文件都有其各自的有其各自的DTD文件。文件。Hibernate的对象的对象-关系映射文件所遵循的关系映射文件所遵循的DTD文件,文件,可以去可以去http:/ rnate-mapping-2.0.dtd下载,该下载,该文件对文件对元素有以下定义:元素有以下定义: 元素中存在元素中存在子元素,子元素,hibernate-mapping-2.0.dtd文件对文件对元素有

16、如下定义:元素有如下定义: 2元素元素 按照按照hibernate-mapping-2.0.dtd的定义,在的定义,在元素中必须存在元素中必须存在子元素,且子元素,且子元素只能出现一次。同时子元素只能出现一次。同时子元素可以出现多次,子元素可以出现多次,但是按照但是按照DTD的定义顺序,的定义顺序,子元素必须在子元素必须在子元素之前。子元素之前。元素用来设置对象标识符,它有三个属性需要配置,分别如下:元素用来设置对象标识符,它有三个属性需要配置,分别如下: name:与对应持久化类中的id属性名一致。 type:与对应持久化类中的id属性的数据类型一致。 column:与对应关系数据库表中的字

17、段名一致。 元素有一个元素有一个子元素,子元素,元素用来设定标识符生元素用来设定标识符生成器。成器。 Hibernate提供了标识符生成器接口:提供了标识符生成器接口:net.sf.hibernate.id.IdentifierGenerator接口,并提供了多种内置的实现。例如以上接口的缩写名为接口,并提供了多种内置的实现。例如以上接口的缩写名为“identity”。 代码书写可以写成如下格式:代码书写可以写成如下格式: 3元素元素 元素包括多个属性,主要为以下几个:元素包括多个属性,主要为以下几个: name属性:指定持久化类的属性名称。属性:指定持久化类的属性名称。 type属性:指定属

18、性:指定Hibernate映射类型。映射类型。Hibernate映射类型是映射类型是Java类型类型与与SQL类型的桥梁。例如当类型的桥梁。例如当SQL类型为类型为varchar时,那么时,那么Hibernate映射映射类型为类型为java.lang.String类型。类型。 column属性:指定与类的属性映射的关系数据库表的字段名,该名属性:指定与类的属性映射的关系数据库表的字段名,该名称不区分大小写。称不区分大小写。 not-null属性:为属性:为true时,表示时,表示name属性不允许为属性不允许为null;当为;当为false时,时,表示允许为表示允许为null,默认为,默认为f

19、alse。 length属性:指定类属性存储的数据长度。属性:指定类属性存储的数据长度。 利用利用Hibernate API访问数据库访问数据库 Hibernate的初始化的初始化 首先创建一个首先创建一个Configuration类的实例,然后调用类的实例,然后调用Configuration对象的对象的configure()方法,此时方法,此时Hibernate会读取默认文件路径下的配置文件,并将配置文件会读取默认文件路径下的配置文件,并将配置文件的信息加载至内存中。如当主配置文件名称不是默认的名称时,譬如为的信息加载至内存中。如当主配置文件名称不是默认的名称时,譬如为“a.xml”,可以作

20、为参数传入,可以作为参数传入configure()方法中。方法中。 接下来调用接下来调用Configuration对象的对象的buildSessionFactory()方法以创建方法以创建SessionFactory类的实例,并把类的实例,并把Configuration对象所包含的所有配置信息拷对象所包含的所有配置信息拷贝至贝至SessionFactory对象的缓存中。对象的缓存中。 如以下代码:如以下代码:Configuration conf = new Configuration();conf.configure();/conf.configure(a.xml);SessionFactor

21、y fact = conf.buildSessionFactory(); SessionFactory对象是一个重量级的对象,如果在应用中只有一个数据对象是一个重量级的对象,如果在应用中只有一个数据存储源,只需要创建一个存储源,只需要创建一个SessionFactory实例,如果创建多个实例,如果创建多个SessionFactory实例,将会消耗掉很大的内存空间。实例,将会消耗掉很大的内存空间。 访问访问Hibernate的的Session接口接口 Hibernate初始化结束后,就可以调用初始化结束后,就可以调用SessionFactory实例的实例的openSession()方法来获得方法

22、来获得Session实例,通过实例,通过Session实例,可以对数据库进行各种操作,实例,可以对数据库进行各种操作, 如以下代码片段将一个如以下代码片段将一个Java对象保存至数据库中对象保存至数据库中 。Transaction tran;trytran =session.beginTransaction();session.save(users);/users代表一个对象mit();catch(Exception e)if(tran!=null)tran.rollback();finallysession.close();Session实例的删除、查询、更新、加载等方法的演示实例的删除、查

23、询、更新、加载等方法的演示 1delete()方法演示方法演示 int id=1;Transaction tran=session.beginTransaction();session.delete(from Users as u where u.id=+id);mit();2find()方法演示方法演示String name=null;String password=null;Transaction tran=session.beginTransaction();List list=session.find(from Users as u );for(int i=0;ilist.size()

24、;i+)Users users=(Users)list.get(i);name=users.getName();password=users.getPassword();3update()方法的演示方法的演示 int id=1; Transaction tran = session.beginTransaction(); List list=session.find(from Users as u where u.uid=+id); for(int i=0;ilist.size();i+)Users users=(Users)list.get(i);users.setPassword(abc1

25、23);session.update(users); mit(); mit();4. load()方法演示方法演示 int id=1; Transaction tran = session.beginTransaction(); Users users=(Users)session.load(Users.class,id); users.setPassword(abc123); mit(); 为了提高开发效率,Hibernate提供了一些实用工具,它们用于在映射文件、Java源文件以及数据库Schema之间自动进行转换。下面来看看这些工具的转换作用: hbm2java:根据映射文件自动生成Ja

26、va源文件。 hbm2ddl:根据映射文件自动生成数据库Schema。 XDoclet:根据带有Doclet标记的Java源文件生成映射文件。 Middlegen:根据数据库Schema自动生成映射文件。Hibernate提供的转换工具提供的转换工具 编写映射文件编写映射文件 hbm2java和hbm2ddl工具是根据映射文件来自动生成Java源文件或数据库的,所以需要先编写对象-关系的映射文件。 元素用于精度的控制元素用于精度的控制Java源代码中的内容,它具有以下属性:源代码中的内容,它具有以下属性: class-description:指定描述类的javaDoc。 field-descr

27、iption:指定描述类属性的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方法中包

28、含此属性。 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的类型。 ch

29、eck:设定SQL检查约束。运行运行hbm2java和和hbm2ddl工具工具 将将“hibernate.cfg.xml”配置文件拷贝至配置文件拷贝至src目录下。我们将采用目录下。我们将采用ANT工具来运行它。在项目的根目录下建立一个工具来运行它。在项目的根目录下建立一个“build.xml”文件,这个文件文件,这个文件含有四个任务,这里会用到含有四个任务,这里会用到“generate-code”、“schemaexport”两个任务。两个任务。 然后运行然后运行“build.xml”文件,就可以在文件,就可以在src目录下生成目录下生成User.java类文件类文件了。由于篇幅有限,就不列

30、出了。由于篇幅有限,就不列出Java文件的内容了。同时在项目根目录下,也文件的内容了。同时在项目根目录下,也会产生一个会产生一个“schema-export.sql”文件,文件,该文件是在该文件是在“build.xml”中设定中设定的:的: drop table if exists INFOcreate table INFO (id int not null auto_increment,username varchar(10) not null,phone varchar(11),set varchar(2),address varchar(100),email varchar(30),pr

31、imary key(id)实践项目实践项目 一、程序的实现要求如下:一、程序的实现要求如下:(1)保存对象至数据库。)保存对象至数据库。(2)从数据库中删除对象。)从数据库中删除对象。(3)从数据库中查询对象。)从数据库中查询对象。 二、实现步骤二、实现步骤 (1)以)以Struts+Hibernate形式来实现该项目。当用户点击形式来实现该项目。当用户点击“添加添加”按钮时,在按钮时,在AddAction类中实现对象的持久化类中实现对象的持久化 。(2)用户成功保存数据后,将在页面中显示出所有已经保存)用户成功保存数据后,将在页面中显示出所有已经保存的信息,并在每条信息前加上一个复选框,用来

32、选择需要删的信息,并在每条信息前加上一个复选框,用来选择需要删除的数据,编写代码实现该功能除的数据,编写代码实现该功能bean 。(3)当用户选择某条数据或多条数据后,点击)当用户选择某条数据或多条数据后,点击“删除删除”按钮,按钮,在在DeleteAction类中完成删除的操作。类中完成删除的操作。(4)最后配置)最后配置Hibernate的主配置文件和映射的持久化类文的主配置文件和映射的持久化类文件。件。本章总结本章总结q创建创建Hibernate主配置文件主配置文件 q创建创建Hibernate映射文件映射文件 q利用利用Hibernate API访问数据库访问数据库 q使用使用Hibernate转换工具转换工具 q使用使用Hibernate实现数据的添加、删除、修实现数据的添加、删除、修改、查询等功能改、查询等功能

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号