注:该系列教程。部分内容来自王健老师编写ssh整合开发教程

Hibernate是一款优秀的ORM(Object Relation Mapping-对象关系映射图)工具。与Struts、Spring项目并称java领域的三大优秀框架之中的一个。

Hibernate主要是从表到java类(对象)的映射。

该章节代码承接前面所述代码。

第一步:整合Hibernate全部的包复制到WEB-INF/lib文件夹下:


图-1

第二步:在com/xuzheng/model文件夹下,建立users表的映射类文件User.java例如以下:

提示:书写Hibernate类的映射文件。一个类文件映射一个数据表,因为眼下我们在ssh数据库中仅仅有一个表。所以仅仅建立一个文件就能够了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHV6aGVuZ19qYXZh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

图-2

第三步:书写Hibernate的映射文件。Hibernate的映射文件以.hbm.xml结尾例如以下:

提示:建议将映射文件和类放在同一个文件夹下


图-3

User.hbm.xml的源文件例如以下:

<?xml version="1.0"?

>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xuzheng.model.User" table="users">
<id name="id" column="id" type="string">
<generator class="uuid"></generator>
</id>
<property name="name" column="name"></property>
<property name="pwd" column="pwd"></property>
</class>
</hibernate-mapping>

说明:

1、以<!DOCTYPE开头的文档类型定义

2、<class></class>中定义这User类与users表相应

3、<generator></generator>为声明主键

4、<property></property>声明其它属性

第四步:改动applicationContext.xml文件,配置Hibernate例如以下:

	<!-- 1、 凝视之前Spring的事务管理-->
<!--
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
-->
<!--2、声明Hibernate的sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 2.1|注入DataSource -->
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<!-- 2.2、声明Hibernate的属性 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
</props>
</property>
<property name="mappingResources">
<list>
<!--2.3、配置hbm.xml配置文件 -->
<value>com/xuzheng/model/user.hbm.xml</value>
</list>
</property>
</bean> <!--3、声明Hibernate的transactionManager -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

提示:依照1~3进行改动和配置


第五步:配置好以后。公布项目启动程序。直到能正常启动项目为止。若不能正常启动,应该检查文件是否有错。


第六步:改动OneDaoImpl.java,改动成为使用Hibernate的HQL语句进行查询,例如以下:

package com.xuzheng.dao.impl;
import java.sql.Types;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.SqlFunction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.xuzheng.dao.IOneDao;
import com.xuzheng.model.User;
public class OneDaoImpl extends HibernateDaoSupport implements IOneDao{
//1、对类加入继承 HibernateDaoSupport
//2、去掉原有注入的DataSource
public Map login(Map map) {
String name = (String) map.get("name");
String pwd = (String) map.get("pwd");
//3、声明HQL语句,注意当中的:name
String sql = "select count(1) from users where name=:name and pwd=:pwd";
//4、使用Session查询
List temp = getSession().createQuery(sql).setString("name", name)
.setString("pwd", pwd)
.list();
int i = Integer.parseInt(temp.get(0).toString());
System.out.println("此username的用户数量:"+i);
if(i >= 1){
map.put("result", "1");
}
return map;
}
//查询全部用户列表
public List query() {
//5、改写query方法
List list = getSession().createCriteria(User.class).list();
return list;
}
}

提示:依照1~5的顺序来实现

第七步:改动applicationContext.xml文件里的OneDao例如以下:

<bean id="oneDao" class="com.xuzheng.dao.impl.OneDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

提示:将原来注入DataSource属性。改动成注入sessionFactory

第八步:公布执行项目。看能否正常启动和訪问。

源码下载:

http://download.csdn.net/detail/u014548782/7218965



Struts2+Spring+Hibernate step by step 06 整合Hibernate的更多相关文章

  1. Spring整合Hibernate。。。。

    环境搭建,在eclipse中导入spring和hibernate框架的插件,和导入所有使用到的架包 首先,hibernate的创建: 建立两个封装类,其中封装了数据库中表的属性,这儿只写属性,gett ...

  2. Struts2+Spring+Hibernate step by step 04 整合Spring之二,从数据库验证username和password

    注:本系列文章部分内容来自王健老师编写ssh整合开发教程 使用Spring的AOP进行项目的事务管理,已经成为非常多企业的首先,Spring做为优秀的开源项目,其在数据库连接.事务管理方面的优势已经显 ...

  3. Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成

    注意:该系列文章从教师王健写了一部分ssh集成开发指南 引言: 之前没有引入拦截器之前,我们使用Filter过滤器验证用户是否登录,在使用struts2之后,全然能够使用拦截器,验证用户是否已经登录, ...

  4. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  5. Struts2,Spring, Hibernate三大框架SSH的整合步骤

    整合步骤 创建web工程 引入相应的jar包 整合spring和hibernate框架 编写实体类pojo和hbm.xml文件 编写bean-base.xml文件 <!-- 1) 连接池实例 - ...

  6. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  7. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

  8. S2SH框架整合(注解)Struts2+Spring+Hibernate+MySql

    整合简介 Struts2+Spring4+hibernate4整合,Maven管理jar包,Eclipse工具.注解方式 架构截图   1.Spring整合Hibernate 1.1.创建Hibern ...

  9. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

随机推荐

  1. django-debug-toolbar 使用

    https://pypi.org/project/django-debug-toolbar/ https://django-debug-toolbar.readthedocs.io/en/latest ...

  2. UVALive 6486 Skyscrapers 简单动态规划

    题意: 有N个格子排成一排,在每个格子里填上1到N的数(每个只能填一次),分别代表每个格子的高度.现在给你两个数left和right,分别表示从左往右看,和从右往左看,能看到的格子数.问有多少种情况. ...

  3. iOS数字媒体开发浅析

    概述 自然界中的所有看到的听到的都是模拟信号,模拟信号是随时间连续变化,然而手机电脑等信息都属于数字媒体,它们所呈现的内容就是把自然界中这些模拟信号转换成数字信号然后再传递给我们.数字信号不是连续的是 ...

  4. 千千万万的IT开发project师路在何方

    已经找不到该文章的最初出处了,有找到的人请告诉我.谢谢~~ 千千万万的IT开发project师路在何方 2007-06-25 21:41 恭喜,你选择开发project师作为自已的职业! 悲哀.你选择 ...

  5. Qt中事件分发源码剖析

    Qt中事件分发源码剖析 Qt中事件传递顺序: 在一个应该程序中,会进入一个事件循环,接受系统产生的事件,而且进行分发,这些都是在exec中进行的. 以下举例说明: 1)首先看看以下一段演示样例代码: ...

  6. 113.dynamic_cast 虚函数 通过子类初始化的父类转化为子类类型

    #include <iostream> using namespace std; //子类同名函数覆盖父类 //父类指针存储子类地址,在有虚函数情况会调用子类方法,否则会调用父类方法 cl ...

  7. HDU 1512 左偏树+并查集

    思路: 左偏树里面掺了一些并查集的应用 这里放一份左偏树的代码模板 重点就是merge函数了-- int merge(int k1,int k2){ if(!k1||!k2)return k1+k2; ...

  8. SqlCommand的四大方法

    SqlCommand类的方法 ---->>>1.ExecuteNonQuery(); 它的返回值类型为int型.多用于执行增加,删除,修改数据,返回受影响的行数.当select操作时 ...

  9. Swift学习笔记(1)--基本语法

    1.分号; 1>Swift不要求每个语句后面跟一个分号作为语句结束的标识,如果加上也可以,看个人喜好 2>在一行中写了两句执行语句,需要用分号隔开,比如 let x = 0; printl ...

  10. XTUOJ 1238 Segment Tree

    Segment Tree Accepted : 3 Submit : 21Time Limit : 9000 MS Memory Limit : 65536 KB Problem Descriptio ...