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>
第五步:配置好以後。公布項目啟動程序。直到能正常啟動項目為止。若不能正常啟動,應該檢查文件是否有錯。
第六步:改動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