在上一次Struts的基础上,整合Hibernate,依然参考网上大神的案例代码,由于版本问题的地方做了修改。

Eclipse+Struts地址->点这里

在此基础上,需要用到的相关的版本信息(有需要的可以留言^.^):

Hibernate :hibernate-release-4.3.10.Final

MySQL : MySQL Server 5.5

JDBC: mysql-connector-java-5.1.26-bin.jar

建议:大家在用的时候 包名最好改成自己的 这样在修改的过程中,可以更好的将映射的流程弄明白!

这里的步骤借鉴了原文的讲述,十分详细,感性探路的大神。

1.将Hibernate内的lib/required下的jar包和lib/jpa下的jar包复制到SSHProject项目的lib目录下。

 

2.在上面Struts项目的基础上添加com.tiny.ssh.dao和com.tiny.ssh.daoImpl包。分别创建BaseDao接口和UserDao类。

整理结构图(注意相应文件的位置和名字):


3.在数据库中创建对应的表user来写入要注册的用户。

create table user(
userId int auto_increment,
userName varchar(16) not null,
password varchar(16) not null,
gender int not null,
primary key(userId)
);

4.创建user表的Hibernate映射文件。因为这里要创建user表对应的POJO类,所以我这里把之前com.tiny.ssh.beans包改成com.tiny.ssh.forms包,用来存放页面传过来的表单数据,新创建com.tiny.ssh.beans包,用来创建POJO对象来对应数据库中的表。路径:POJO类同目录。

User.java:

package com.tiny.ssh.beans;public class User {private int userId;private String username;private String password;private int gender;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}}

User.hbm.xml:

<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="com.tiny.ssh.beans"><class name="User" table="user"><id name="userId" column="userId"><generator class="native"></generator></id><property name="username" column="userName" type="java.lang.String"not-null="true" length="16"></property><property name="password" column="password" type="java.lang.String"not-null="true" length="16" /><property name="gender" column="gender" type="java.lang.Integer" length="1" /></class>
</hibernate-mapping>

5.建立Hibernate配置文件。路径:src目录下。

Hibernate.cfg.xml(需要更改自己的数据库连接和最下面的映射):

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><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">root</property><!-- JDBC connection pool (use the built-in) --><!-- <property name="connection.pool_size">1</property> --><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><!-- <property name="current_session_context_class">thread</property> --><!-- Disable the second-level cache  --><!-- <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> --><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><!-- <property name="hbm2ddl.auto">update</property> --><mapping resource="com/tiny/ssh/beans/User.hbm.xml"/></session-factory>
</hibernate-configuration>

6.编写Session工厂类。整合Spring后,数据源的创建和SessionFactory的创建都交给Spring去管理,就无需这个工厂类了,所以这里我临时创建在daoImpl包里面。

HibernateSessionFactory.java(有几个方法已经不再使用了,这里作为演示,不再去修改):

package com.tiny.ssh.daoImpl;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;public class HibernateSessionFactory {private static final String CFG_FILE_LOCATION = "/Hibernate.cfg.xml";private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();private static final Configuration cfg = new Configuration().configure(CFG_FILE_LOCATION);private static ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(cfg.getProperties());private static ServiceRegistry registry;private static SessionFactory sessionFactory;public static Session currentSession() throws HibernateException {Session session = threadLocal.get();if (session == null || session.isOpen() == false) {if (sessionFactory == null) {try {registry = builder.buildServiceRegistry();sessionFactory = cfg.buildSessionFactory(registry);} catch (Exception e) {e.printStackTrace();}}session = sessionFactory.openSession();threadLocal.set(session);}return session;}public static void closeSession() throws HibernateException {Session session = threadLocal.get();threadLocal.set(null);if (session != null) {session.close();}}}

7.修改业务逻辑实现类。

UserManagerImpl.java:

package com.tiny.ssh.serviceImp;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;import com.tiny.ssh.beans.User;
import com.tiny.ssh.dao.BaseDao;
import com.tiny.ssh.daoImpl.HibernateSessionFactory;
import com.tiny.ssh.daoImpl.UserDao;
import com.tiny.ssh.forms.UserForm;
import com.tiny.ssh.service.UserManager;public class UserManagerImpl implements UserManager {private BaseDao dao;private Session session;public UserManagerImpl() {dao = new UserDao();}@Overridepublic void regUser(UserForm userForm) throws HibernateException {session = HibernateSessionFactory.currentSession();dao.setSession(session);// 获取事务Transaction ts = session.beginTransaction();// 构造User对象User user = new User();user.setUsername(userForm.getUsername());user.setPassword(userForm.getPassword());user.setGender(userForm.getGender());// 保存User对象
        dao.saveObject(user);// 提交事务
        ts.commit();// 关闭Session
        HibernateSessionFactory.closeSession();}}

运行的结果图(一定要注意对应地方的名称):

希望大家多多理解相应的映射~~

转载于:https://www.cnblogs.com/TinyBobo/p/4677923.html

[SSH] Eclipse+Struts+Hibernate的简单应用相关推荐

  1. ssh架构之hibernate(一)简单使用hibernate完成CRUD

    1.Hibernate简介   Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,h ...

  2. Java+Jsp+Mysql实现简单在线图书推荐系统 个性化图书推荐系 java实现基于用户的协同过滤推荐算法 源代码下载 算法实现 Spring+Struts+Hibernate(SSH)开发框架

    Java+Jsp+Mysql实现简单在线图书推荐系统 个性化图书推荐系统(基于用户的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 MyEclipse10,jdk1.7,mysql5.5,t ...

  3. java ssh框架 struts spring hibernate 简介

    目录 什么是SSH框架 浅谈Struts 什么是Struts Struts的核心构成 为什么使用Struts 浅谈Hibernate 什么是Hibernate Hibernate的核心构成 浅谈Spr ...

  4. java+jsp+mysql实现汽车销售管理系统CarSaleManageSystem 前台买家 后台卖家 SSH(spring+struts+hibernate)开发框架

    java+jsp+mysql实现汽车销售管理系统CarSaleManageSystem 项目简介 系统分前台和后台 前台是普通用户可以注册.登陆.修改个人信息.修改密码.浏览汽车.添加个人购车信息.查 ...

  5. eclipse学习(第三章:ssh中的Hibernate)——7.Hibernate使用注释开发

    eclipse学习(第三章:ssh中的Hibernate)--7.Hibernate中的注释 前言 项目实践 1.初始化项目及jar包拉取 2.mysql数据结构 3.创建hibernate.cfg. ...

  6. SSH框架与配置文件的简单搭建

    在eclipse中,对ssh框架进行学习以及简单的编写,以下为基本的项目操作与须知歩骤: 1.导包(创建项目后的第一步,将所有相关的资源包导入项目WebContent  / WEB-INF/ lib/ ...

  7. 基于Spring+Struts+Hibernate实现的健康管理平台

    源码及论文下载:http://www.byamd.xyz/tag/java/ 摘要 随着网络技术的不断发展,网站的开发与运用变得更加广泛.这次采用java语言SSH框架(Spring,Struts,H ...

  8. 如何配置struts+hibernate,基本使用方法

    不少童鞋在自学SSH框架的时候,难在创建第一个项目,如何搭建好这些框架,很多书上只是给出了代码但是没有教如何使用,所以在本次博客中将会图文结合来说一下如何使用struts结合hibernate,并创建 ...

  9. 【SSH系列】---Hibernate的基本映射

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 开篇前言 ...

最新文章

  1. 第三十四课.模糊神经网络
  2. MVC3----筛选数据(BeginForm:输出form表单)
  3. 004_Ajax服务器响应
  4. CTF-Python打包成的exe文件Re逆向
  5. android udp和tcp区别,UDP模式与TCP模式的区别
  6. PHP页面间参数传递的四种方式
  7. android style 中一些颜色的定义
  8. Node.js 安装及配置
  9. PuppeteerSharp: 更友好的 Headless Chrome C# API
  10. Visual Studio 2017正式版离线安装及介绍
  11. matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题
  12. r和matlab学哪个,初学者求教‘r*’是什么意思啊
  13. 括号匹配不一定用栈哦(洛谷P1739题题解,Java语言描述)
  14. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作 #华为云·寻找黑马程序员#
  15. 6 万出头的北京房价,程序员如何靠自己安家?
  16. 谨慎设计方法签名(40)
  17. 【SpringBoot】24、SpringBoot中实现数据字典
  18. c语言实验报告评语大全,c语言实验报告(学生).doc
  19. Twitter账号总被关联封号? 如何解决?
  20. java变量的定义_Java变量_Java变量概念定义

热门文章

  1. 微软研究员在ImageNet计算机视觉识别挑战中实现里程碑式突破
  2. 用 WEKA 进行数据挖掘,第 3 部分: 最近邻和服务器端库
  3. Linux组管理和权限管理
  4. 【Java】MyBatis与Spring框架整合(一)
  5. 线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
  6. 吐血整理所有常用端口,遇到端口问题一查就懂!
  7. Ubuntu-16.04 部署 OpenStack Ocata下
  8. getInitParameter方法
  9. 图像处理之基于阈值模糊
  10. JS函数浅析之constructor、prototype属性