zoukankan      html  css  js  c++  java
  • Struts2+Spring+Hibernate step by step 06 整合Hibernate

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

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

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

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

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


    图-1

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

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


    图-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



  • 相关阅读:
    flutter之正则
    Flutter:Slivers大家族,让滑动视图的组合变得很简单!
    flutter之添加阴影
    flutter之https://www.jianshu.com/p/594a327267dc
    mac os下vscode快捷键
    detached HEAD解决办法
    flutter如何使用配置文件pubspec.yaml(位于项目根目录)来管理第三方依赖包
    flutter Route路由基本用法
    更新操作 关于json字符串的拼接、json字符串与json对象之间的转换
    做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8408634.html
Copyright © 2011-2022 走看看