这一篇是承接上一篇文章《Eclipse 中 SSH 项目搭建图文教程(一)​》写的,在前一篇文章搭建的环境及新建项目的基础上,主要说一说整合 Hibernate 部分。博客中以前写过一篇《Hibernate 简单入门》,可以作为参考。

由于前一篇文章是很早以前写的,现在都大半年过去了,得空写这一篇,所以环境上难免有些差异,主要有一下几点。


操作系统是 Win7 旗舰版 64 位。

开发环境又把原来的环境搭建了一次,避免与上篇文章中出现不一致的情况,安装包还是上篇文章中分享的那些包。

由于开发中已用了 Tomcat7,端口 8080 被占用,所以在新搭建的环境中,还是用原来的 Tomcat8,只是端口变为了 9090。

下面开始整合 Hibernate。

第一步,导入 Hibernate 所需要的包。

首先需要到官网下载 Hibernate 框架,下载地址为https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.2.3.Final/hibernate-release-5.2.3.Final.zip/download,这里下载的版本是 hibernate-release-5.2.3.Final,下载后解压到 F 盘下。依次打开 F 盘 -> hibernate-release-5.2.3.Final -> lib -> required,把所有包复制到项目的 WebContent/WEB-INF/lib 下。

第二步,新建数据库,数据表。

在上篇文章中,我们搭建 Struts 的时候,项目新建了实体对象 UserDto,该对象中的属性常常是我们需要保存到数据库中的信息,所以我们对照该实体,创建表中相应的字段。

至于如何安装数据库,如何操作数据库,连接数据库的工具有哪些等,本博客中有多篇文章是写这方面的,可以在站内搜索并参考。

这里简单用 MySQL 数据库来存储数据,下面主要把语句和表结构的截图贴出来。

create database ssh;

create table user(username varchar(50) primary key, password varchar(100));

Eclipse 中 SSH 项目搭建图文教程(二)_图文教程


第三步,导入 JDBC 驱动包。

从上篇文章的分享链接中,下载 mysql-connector-java-5.1.26-bin.jar 包,复制到项目的 WebContent/WEB-INF/lib 下。

第四步,编写实体与表的对应关系映射文件。

新建映射文件 User.hbm.xml,最好和 UserDto.java 放在同一个包下,内容如下:


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.menglanglang.ssh.demo.dto">
<class name="UserDto" table="USER">
<id name="username" column="USERNAME"></id>
<property name="password" column="PASSWORD" />
</class>
</hibernate-mapping>


第五步,编写 hibernate 配置文件。

Hibernate 默认的配置文件名为 hibernate.cfg.xml,最好不要改,就取这名,和 struts.xml 文件一样,放在 src 目录下,内容如下:


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接设置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/ssh</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 方言配置 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 控制台输出sql语句 -->
<property name="show_sql">true</property>
<!-- 实体类映射文件 -->
<mapping resource="com/menglanglang/ssh/demo/dto/User.hbm.xml" />
</session-factory>
</hibernate-configuration>


第六步,修改 LoginAction。

修改 LoginAction.java,直接在默认方法中加入保存数据部分的代码,详细如下:


package com.menglanglang.ssh.demo.action;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.menglanglang.ssh.demo.dto.UserDto;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private UserDto user;
@Override
public String execute() throws Exception {
Configuration cfg = new Configuration();
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
sf.close();
return SUCCESS;
}
public UserDto getUser() {
return user;
}
public void setUser(UserDto user) {
this.user = user;
}
}


第七步,测试。

发布并启动项目,在浏览器中运行 http://localhost:9090/SSH_Framework/login.jsp,输入信息,点击登陆,则会把添加的信息直接保存到数据库中,如下所示。

Eclipse 中 SSH 项目搭建图文教程(二)_hibernate_02


Eclipse 中 SSH 项目搭建图文教程(二)_图文教程_03


以上只是简单的导入了 Hibernate 的包,并简单的用实体测试了一下保存的效果,其实接下来还有很多很多需要优化的地方,比如取得 Session 等部分代码需要抽取并封装,以便于以后对实体做增删改查时,更加方便。

另外,Hibernate 的配置文件及其庞大和复杂,这里只是简单的配置了数据库,所以,任务多多,慢慢学,慢慢练,加油!

这部分只是简单的运用了 Hibernate 的事务处理,如果把 Spring 加入,则可以用 Spring 去管理事务。