基于Webwork+Hibernate的J2EE开发入门实例.doc

上传人:西安人 文档编号:5020785 上传时间:2020-01-29 格式:DOC 页数:50 大小:1.42MB
返回 下载 相关 举报
基于Webwork+Hibernate的J2EE开发入门实例.doc_第1页
第1页 / 共50页
基于Webwork+Hibernate的J2EE开发入门实例.doc_第2页
第2页 / 共50页
基于Webwork+Hibernate的J2EE开发入门实例.doc_第3页
第3页 / 共50页
基于Webwork+Hibernate的J2EE开发入门实例.doc_第4页
第4页 / 共50页
基于Webwork+Hibernate的J2EE开发入门实例.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《基于Webwork+Hibernate的J2EE开发入门实例.doc》由会员分享,可在线阅读,更多相关《基于Webwork+Hibernate的J2EE开发入门实例.doc(50页珍藏版)》请在三一文库上搜索。

1、基于Webwork+Hibernate的J2EE开发入门实例广东省电信规划设计院有限公司信息系统咨询研究院Guangdong Planning and Designing Institute of Telecommunications Co.,Ltd2008年8月文档更改历史记录序号主要更改内容版本号更改人更改时间1编写文档主体内容1.0.0薛珂2008-08目录1.概述42.搭建J2EE开发环境42.1 软件获取安装42.2 环境配置53.Hibernate入门93.1 Hibernate简介93.2开始前的准备103.2 JDBC直接操纵数据库113.3 Hibernate操作数据库173

2、.3.1 第一个Hibernate程序173.3.2 表与表关联293.4 本章小结344.使用Webwork进行B/S开发354.1 第一个B/S程序354.2 处理变量输入输出414.3 另外一种处理变量的方法454.4 最常用的一种变量处理方法464.5 本章小结485.Hibernate和Webwork结合491.概述使用JAVA技术进行B/S项目开发经过多年的研究发展,目前主要有两种主要的方式: 一种是重量级的EJB(Enterprise Java Bean),另一种是轻量级的Struts(2)+Hibernate+Spring. 由于EJB编程复杂性很高,一般的中小型应用系统大多会

3、采用轻量级的J2EE开发.本文所介绍的Webwork+Hibernate+Spring的技术,就是属于轻量级J2EE开发.Struts2本质上是Webwork(具体内容可参见 http:/struts.apache.org/),但由于Struts2目前文档方面欠缺,因此大多数人学习Struts2均从Webwork入手。本文的组织结构如下:第2章介绍如何搭建J2EE开发环境,第3章介绍Hibernate数据库开发基本方法,第4章介绍Webwork基本使用方法,第5章以实例介绍如何将Hibernate和Webwork结合起来用于J2EE开发。2. 搭建J2EE开发环境2.1 软件获取安装1) 本教

4、程所使用的所有软件都打包在 file-server-1新同事交换目录x薛珂env.rar 里面,将env.rar下载至本地。2) 建立目录e:j2eeenv (也可以是其它路径,为简单起见,建议设为该路径)3) 将env.rar移动至e:j2eeenv。4) 将env.rar 解压至当前目录。解压后将会看到以下目录结构:E:j2eeenv- ant1.7- apache-tomcat-5.5.20- eclipse- Java- myeclipse- mysql- setenv.bat5) 如果你的目录结构如上图所示,那么软件安装工作已经完成!下面进行配置。2.2 环境配置1) 设置环境变量。

5、右键编辑setenv.bat,将看到以下内容:set JDIR=e:j2eeenvset JAVA_HOME=%JDIR%Javajdk1.5.0_10set ANT_HOME=%JDIR%ant1.7set CATALINA_BASE=%JDIR%apache-tomcat-5.5.20set CATALINA_HOME=%JDIR%apache-tomcat-5.5.20set CLASSPATH=%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;.;set Path=%path%;%ANT_HOME%bin;%JAVA_HOME%bin;%JDIR

6、%mysql5bin上面是我们要设置的环境变量。进入桌面右键我的电脑高级环境变量。在系统变量栏点击 新建(W),填写变量名和变量值后点确定依次将setenv.bat里的项和值添加进去。2) 在开始运行输入 cmd,打开命令行, 输入 echo %JAVA_HOME% ,测试环境变量是否建立成功。成功的界面如下:3) 将mysql注册为系统服务,并且启动。(当然可以采用其它数据库,如果使用其它数据库,直接跳过这步)a. 从命令行进入 cd e:j2eeenvmysqlbinb. 输入命令 mysqld-nt install-manual mysql5该命令的意思是将mysql安装为系统服务,服务

7、名称为mysql5,但是必须手工启动才可以运行,开机不会自动运行。c. 启动mysql5服务。输入命令 net start mysql5d. 安装MYSQL客户端工具SQLYOG。从file-server-1新同事交换目录x薛珂tools下载SQLyog.rar,解压后安装。e. 安装成功后,运行SQLyog.exe。点 New按钮,弹出如入对话框。User Name为:rootPassword为: 442_dylan点击 Connect。4) 新建目录 e:j2eeworkdir5) 进入e:j2eeenveclipse目录,双击eclipse.exe运行eclipse。6) 第一次运行ec

8、lipse会要求选择工作目录,请选择为e:j2eeworkdir。7) 点击 MyEclipse-Update Subscription在此输入Subscriber: www.1cn.bizSubscriber Code: jLR8ZC-444-55-4467865481680090注册成功后会发现:Subscriber: www.1cn.biz Product ID: E3MP (MyEclipse Professional Subscription)License version: 9.99Full Maintenance IncludedSubscription expiration d

9、ate (YYYYMMDD): 20991231Number of licenses: Unlimited至此,环境搭建完毕。3.Hibernate入门3.1 Hibernate简介Hibernate 是一个开放源代码的对象关系映射(R/O映射)框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,

10、这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本。 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。3.2开始前的准备我们以 地址员工部门 关系为实,来进行简单的数据库操作,首先需要建立数据库,并导入模拟数据。三者关系如下:1个员工对应1个部门,但对应多个地址(1人拥有多处地址)。-Mysql版create table department( id bigint(15) not null auto_increment, dname varchar(50), primary key

11、 (id);insert into department (dname) values (xxy);create table employee( id bigint(15) not null auto_increment, ename varchar(40), departmentId bigint(15), age int(3), primary key (id);insert into employee (ename,departmentId,age) values (dylan,1,25);create table address( id bigint(15) not null auto

12、_increment, addressName text, postCode varchar(10), employeeId bigint(15), primary key (id);insert into address (addressName,postCode,employeeId) values (Guangzhou,510000,1);3.2 JDBC直接操纵数据库为了更好地理解Hibernate的工具原理,最好的方法就是与传统的JDBC/ODBC直接操作数据库方法做比较。因此本小节首先讲述如何直接使用JDBC进行数据库操作。1 打开Eclipse,选择File-New-Projec

13、t,选择 Java Project,点击Next.2 输入项目名称 jdbcTest, 之后点击Finish3 点击Finish,可以看到一个新项目被建立出来。4 右键点击 jdbcTest,在弹出菜单中选择 New-Folder, 新建一个名称为lib的目录。5 下载 file-server-1新同事交换目录x薛珂jarsmysql.jar,把它复制到lib目录下。6 右键点击jdbcTest,在弹出菜单中选择Build Path - Configure Build Path点击 Add JARs选中我们刚刚添加的mysql.jar,之后点击OK。于是mysql驱动就加载完毕。7 右键点击j

14、dbcTest,在弹出菜单中选择 New-Source Folder。8 右键点击src 目录,在弹出菜单中选择 New-Package。在Name一栏输入: org.gpdi.jdbcTest 作为包(Package)的名称。9 右键点击刚刚建好的Package ,在弹出菜单中选择 New-Class,开始真正写程序。我们建立了一个名称为 ControlDB的类,点击Finish。10 下面要做的事情就是在该类里面写操作数据库的代码,代码请参考file-server-1新同事交换目录x薛珂sourcesjdbcTestControlDB.java。11 右键点击ControlDB,在弹出菜单

15、中选择 Run As - Java Application.运行该程序。在Console会输出程序运行的结果。在数据库会看到刚刚插入的数据。本节通过Step By Step的方法,介绍了使用Eclipse进行开发的详细步骤。并且通过简单的JDBC连接程序,介绍了使用JAVA进行数据库操作的原始方法。由于JAVA是高度面向对象的编程语言,它要求一切皆是对象,因此使用JDBC这样的方式读写数据库,与JAVA的设计思想是格格不入的,因此人们就提出来,可否将对数据表的存取转换为对对象的存取,即如何把关系表映射成为对象,这就是Hibernate所要做的工作。在下节将介绍使用Hibernate方法进行数据

16、库操作。3.3 Hibernate操作数据库本节使用Hibernate对地址员工部门三个关系表进行操作,由于Hibernate功能非常强大,本节只能简约介绍其最基本的使用方法。主要分为以下几个内容:1)基本配置 2)单表操作3)关联操作。3.3.1 第一个Hibernate程序Hibernate实质是通过配置文件把数据库(Table)和类(Class)联系起来,把数据库的字段(Field)和类的属性(Property)联系起来。表 department类 Departmentid bigint(15) keyprivate Long iddname varchar(40)private Str

17、ing dname表1. department表和Department对象的映射表 employee类 Employeeid bigint(15) keyprivate Long idename varchar(40)private String enamedepartmentId bigint(15)Private Department departmentage int(3)private int age表2. employee表和Employee对象的映射表 address类 Addressid bigint(15) keyprivate Long idaddressName varch

18、ar(40)private String addressNameemployeId bigint(15)Private Employee employeepostCode varchar(10)private String postCode表3. address表和Address对象的映射下面具体讲述如何进行映射及操作。关于Eclipse的基本使用方法请参阅3.2节。本节不再赘述。1) 新建一个Java Project项目,项目名称为 hibernateTest。2) 在项目下新建一个目录Folder,名称为lib。3) 把file-server-1新同事交换目录x薛珂sourceshiber

19、nateTestlib下所有文件下载到lib目录。4) 把lib目录下所有jar加入Build Path(右键-Build Path-Configure Build Path-Add Jars)。5) 建立Source Folder ,名称为src。6) 在src下面建立Package,名称为org.gpdi.hibernateTest7) 把file-server-1新同事交换目录x薛珂sourceshibernateTestsrc下面的hibernate.cfg.xml文件复制到 src 目录下面,双击打开。点击下面的 Source,进入手工编辑界面。jdbc:mysql:/localho

20、st/sampleorg.gjt.mm.mysql.Driverroot442_dylannet.sf.hibernate.dialect.MySQLDialectTrueTruenet.sf.hibernate.transaction.JDBCTransactionFactory上面就是 Hibernate的配置文件,其中:hibernate.connection.url: 连接字符串 hibernate.connection.driver_class : 驱动名称hibernate.connection.username : 数据库用户名 hibernate.connection.pass

21、word : 数据库密码 而下面这句:是至为关键的,它真正将数据表和类进行关联,这在下面会再次提及。到目前为止,该文件无须做任何修改,可以直接使用。8) 在org.gpdi.hibernateTest包下面建立一个新的类,名称为Department,它需要实现java.io. Serializable接口。添加方法是 a. 右键点击 org.gpdi.hibernateTest包,在弹出菜单中选择New-Classb. 在弹出的对话框中,在Interfaces一栏,点击Add,在Choose Interfaces一栏输入serializable,在Matching Types列表里选择java

22、.io.Serializable,点击OK。 点击Finish,结束创建。新建成的Department.java内容如下:/* * */package org.gpdi.hibernateTest;import java.io.Serializable;public class Department implements Serializable 9) 下面我们为Department添加属性id和dname,添加后代码如下:/* * */package org.gpdi.hibernateTest;import java.io.Serializable;public class Departm

23、ent implements Serializable private Long id;private String dname;10) Hibernate要求我们的类必须实现Serializable接口,并且有一个参数为空的构造函数,因此我们添加一个空的构造数。在代码编辑窗口Department类定义范围内(两个大括号之间)点击右键,在弹出菜单里选择 Source-Generate Constructor Using fields.点击OK,生成代码如下:/* * */package org.gpdi.hibernateTest;import java.io.Serializable;pub

24、lic class Department implements Serializable private Long id;private String dname;public Department() super();当然,构建函数完全可以手工输入,只是借此介绍下一些小技巧。11) 此时我们已经生成了一个Department类,我们称它为POJO(Pure Old Java Object)。POJO必须通过Getter 和 Setter来对其属性进行取和写,因此我们需要添加Getter和Setter。右键点击Department类定义的空白地方,在弹出菜单里选择 Source-Generat

25、e Getters and Setters.选中所有的属性Select All,之后点击OK。现在一个完整的POJO就建立成功了。其完整代码如下:package org.gpdi.hibernateTest;import java.io.Serializable;/* * author xueke * */public class Department implements Serializable private Long id;private String dname;public Department() super();public String getDname() return d

26、name;public void setDname(String dname) this.dname = dname;public Long getId() return id;public void setId(Long id) this.id = id;12) 上面我们建立了同数据表department对应的POJO定义Department。下面我们需要将告诉Hibernate,将他们关联起来。13) 在org.gpdi.hibernateTest下,建立一个新的文件,文件名为Department.hbm.xml。右键点击org.gpdi.hibernateTest-New-File。点击

27、Finish结束创建文件。把下面内容写入Department.hbm.xml。(该文件可以由file-server-1新同事交换目录x薛珂sourceshibernateTestsrc获取)。 这个文件的作用就是告诉Hibernate如何把department表和Department类关联起来,我们来逐个分析其每部分的意义。是该XML文档的模式定义,它定义了XML文档的格式。package指Department类所在的包名称把数据表和类名关联,此处的类名为Department,相关联的数据表名称为 department.Department类的属性名 id type=java.lang.Lon

28、g -映射类型 column=id department 表的字段名 id 告诉Hibernate在插入数据的时候,主键如何生成.native的意思是Hibernate不用处理,直接交给数据库即可,因此我们建立的数据表都有一项自增的字段id. 在mysql中通过auto_increment定义,在Oracle中可以通过Sequence和触发器实现.每个提供给Hibernate管理的数据表必须有主键(Primary key),并且要告诉Hibernate主键如何处理,此处的generator有多种取值方式,我们使用的native,是指把处理权交给数据库,这里如若不明白,直接COPY即可.映射类型

29、 column=dname department 表的字段名 dname /通过property关键字把数据表的字段和POJO的属性关联起来.14) 到此为止,我们已经建立了数据表,POJO类,以及将两者关系起来的hbm文件.最后一步是告诉Hibernate运行时读取该关联文件,即把这个映射关系生效.打开src/ hibernate.cfg.xml.加入如下内容(如若存在,无须重复添加).15) 到此为止,Hibernate的配置全部完成. 如需添加多个数据表映射,重复进行上述步骤即可.16) 下面我们使用Hibernate对department表进行添查删改操作.在org.gpdi.hibe

30、rnateTest包下面建立新的类 ControlDB.该类可由 file-server-1新同事交换目录x薛珂sourceshibernateTestsrc获取.该类实现了4个方法,ControlDB.testInsert();ControlDB.testUpdate();ControlDB.testDelete();ControlDB.testSelect();分别用于对Department表进行插入,更新,删除,查询操作.具体使用方法请参阅源代码及注释.3.3.2 表与表关联在地址-员工-部门的关系中,有两对很明显的关系: 地址-员工, 员工-部门.一个员工可以拥有多个地址,一个地址只对

31、应一个员工,所以员工与地址之间是1:N的关系.一个员工必然属于一个部门,一个部门包括若干员工,所以员工与部门存在N:1的关系. 由于员工必定属于某个部门,因此,在建立员工对象时,需要在其属性中添加一项部门属性,以表明该员工属于哪个部门.同样,在建立地址对象的时候,需要定义其员工属性.在获取数据的时候,获得了员工,应该相应地就立刻得到员工所在的部门,在更新时员工时,如果更新了其部门的属性,这些更改也应可以相应地写入数据库.下面我们用Hibernate来处理这些级联关系.1) 在org.gpdi.hibernateTest下建立Employee对象,Employee对象内容如下:package o

32、rg.gpdi.hibernateTest;import java.io.Serializable;public class Employee implements Serializable private Long id;private String ename;private int age;private Department department;/数据库里面该字段名称为departmentIdpublic Employee() super();public int getAge() return age;public void setAge(int age) this.age = a

33、ge;public Department getDepartment() return department;public void setDepartment(Department department) this.department = department;public String getEname() return ename;public void setEname(String ename) this.ename = ename;public Long getId() return id;public void setId(Long id) this.id = id;2) 在org.gpdi.hibernateTest下建立文件Employee.hbm.xml,内容如下: 前面的内容我们不再重述,重点在于以下这句配置: 下面我们来看看如何使用many to one关联.3) 在ControlDB类中增加一个方法testCascadeInsert(),其代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1