Eclipse中SSH项目搭建图文教程(二)—— 整合Hibernate
2016年10月16日 23:53:52 Hibernate ⁄ 共 3737字 暂无评论 ⁄ 被围观 3,928次

这一篇是承接上一篇文章《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));

ssh_06

第三步,导入 JDBC 驱动包。

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

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

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

Code   ViewPrint
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="com.menglanglang.ssh.demo.dto">
  6.     <class name="UserDto" table="USER">
  7.         <id name="username" column="USERNAME"></id>
  8.         <property name="password" column="PASSWORD" />
  9.     </class>
  10. </hibernate-mapping>

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

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

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

第六步,修改 LoginAction。

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

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.action;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. import com.menglanglang.ssh.demo.dto.UserDto;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. public class LoginAction extends ActionSupport {
  8.     private static final long serialVersionUID = 1L;
  9.     private UserDto user;
  10.     @Override
  11.     public String execute() throws Exception {
  12.         Configuration cfg = new Configuration();
  13.         SessionFactory sf = cfg.configure().buildSessionFactory();
  14.         Session session = sf.openSession();
  15.         session.beginTransaction();
  16.         session.save(user);
  17.         session.getTransaction().commit();
  18.         session.close();
  19.         sf.close();
  20.         return SUCCESS;
  21.     }
  22.     public UserDto getUser() {
  23.         return user;
  24.     }
  25.     public void setUser(UserDto user) {
  26.         this.user = user;
  27.     }
  28. }

第七步,测试。

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

ssh_07

ssh_08

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

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

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

给我留言

留言无头像?