JavaEE教案 (16)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务介绍(5分钟)
根据注册信息在数据库中创建数据库及用户信息表,使用hibernate框架实现注册信息入库。
任务解析(50-60分钟)
1.加入hibernate相关jar包(只需加一次)
2.【可选】创建注册用户表结构
3.创建实体类与表的映射文件
4.配置hibernate全局配置文件
5.dao层:增加注册入库数据处理类
6.service层:增加注册业务处理类
7.action层,修改注册业务控制类
8.调试运行
详细步骤
1.在使用struts2的web项目里引入所需hibernate相关的jar文件
hibernate相关jar文件只需要引入一次,具体要引入的jar文件详见本节任务解析的例子3.1-1的相关内容。
2.【可选】创建注册用户表结构
创建用户表user,表结构如表3.1-2所示。
表3.1-2 用户信息表user
注:若已经编写好user表对应的实体类和实体映射文件,以及在hibernate全局配
置文件的 name="hbm2ddl.auto">create
的时候自动在数据库中生成user表结构。特别提醒,若user表已经存在,则会删
除旧的user表,重新创建新的,会导致旧表中记录全部丢失,所以一般建议该配
置仅使用一次,在使用之后可以将 name="hbm2ddl.auto">create
问题。
3.创建实体类与映射文件
在工程src目录下的com.zdsoft.domain包中新增与user表对应的实体类User,参考如
下:
public class User {
int id;
String name;
String userName;
String password;
String sex;
String province;
int age;
Date birth;
String mobile;
String hobbies;
String email;
//以下省略每个成员变量的get/set方法
}
在com.zdsoft.domain包下新增User.hbm.xml映射文件,具体步骤如下:
首先在User.hbm.xml映射文件中加入文件头,代码如下(一般是固定的,无需改动):
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"/hibernate-mapping-3.0.dtd">
其次在User.hbm.xml文件的文件头下面添加hibernate-mapping节点,关键代码如下:
package属性表示所描述的实体类的路径,本任务的实体类都在com.zdsoft.domain包下,所以做如此配置。
接着在hibernate-maaping节点下添加class节点,关键代码如下:
class节点的name属性表示映射类的类名称。
再次,在class节点下添加相关子节点,参考代码如下:
注:id节点表示所描述类的标识符,其中name属性表示标识符的名称,column属性
表示该标识符对应数据库表中的列名称,若映射类中的属性与表中的字段名完全
一样,则column属性可以省略。
4.配置hibernate全局配置文件
在hibernate.cfg.xml文件的
是让hibernate框架知道并管理我们增加的一个新的实体-关系映射)
5.dao层:增加注册入库数据处理类
在com.zdsoft.dao包下新增RegisterDao,该类编写的详细步骤如下:
首先在RegisterDao类中定义hibernate框架所使用的成员变量,参考如下:Configuration cfg = null;
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
其次定义RegisterDao类的构造方法,参考如下:
public RegisterDao(){
cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
再定义保存User对象的save方法,并实现该方法:
public boolean save(User user) {
boolean ret = false;
try {
session = sessionFactory.openSession();
tx = session.beginTransaction();
session.save(user);
mit();
ret = true;
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
ret = false;
}
if (session != null) {
session.close();
}
return ret;