<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Topquan's Blog

    分享價值----成就你我----我的博客----你的家

    Struts+Spring+Hibernate組合使用

    本文是開發基于 spring web 應用的入門文章,前端采用 Struts MVC 框架,中間層采用 spring ,后臺采用 Hibernate
      
      本文包含以下內容:
      
       · 配置 Hibernate 和事務
      
       · 裝載 Spring applicationContext.xml 文件
      
       · 建立業務層和 DAO 之間的依賴關系
      
       · Spring 應用到 Struts
      
      簡介
      
      這個例子是建立一個簡單的 web 應用,叫 MyUsers, 完成用戶管理操作,包含簡單的 數據庫 增,刪,查,該即 CRUD (新建,訪問,更新,刪除)操作 這是一個三層的 web 應用,通過 Action Struts )訪問業務層,業務層訪問 DAO 圖一簡要說明了該應用的總體結構 圖上的數字說明了流程順序-從 web UserAction )到中間層( UserManager ),再到數據訪問層( UserDAO ),然后將結果返回
      
       Spring 層的真正強大在于它的聲明型事務處理,幫定和對持久層支持(例如 Hiberate iBATIS
      
      以下下是完成這個例子的步驟:
      
       1 安裝 Eclipse 插件
      
       2 數據庫 建表
      
       3 配置 Hibernate Spring
      
       4 建立 Hibernate DAO 接口的實現類
      
       5 運行測試類,測試 DAO CRUD 操作
      
       6 創建一個處理類,聲明事務
      
       7 創建 web 層的 Action model
      
       8 運行 Action 的測試類測試 CRUD 操作
      
       9 創建 jsp 文件通過瀏覽器進行 CRUD 操作
      
       10 通過瀏覽器校驗 jsp
      
      安裝 eclipse 插件
      
       1 Hibernate 插件 http://www.binamics.com/hibernatesync
      
       2 Spring 插件 http://springframework.sourceforge.net/spring-ide/eclipse/updatesite/
      
       3 MyEclipse 插件 ( 破解版 )
      
       4 Tomcat 插件 . tanghan
      
       5 其他插件包括 xml jsp
      
       數據庫 建表
      
       create table app_user(id number not null primary,firstname vchar(32),lastname vchar(32));
      
      新建項目
      
      新建一個 web project ,新建后的目錄結構同時包含了新建文件夾 page 用于放 jsp 文件,和源文件夾 test 用于放 junit 測試文件 同時將用到的包,包括 struts hibernate spring 都導入到 lib 目錄下
      
      創建持久層 O/R mapping/ 小新技術網 www.xker.com
      
       1 src/com.jandar.model 下用 hibernate 插件從 數據庫 導出 app_user .hbm.xml 文件改名為 User.hbm.xml
      
      < ?xml version="1.0"?
      < !DOCTYPE hibernate-mapping PUBLIC
       "-//Hibernate/Hibernate Mapping DTD//EN"
       "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
      < hibernate-mapping package="com.jandar.model"
      < class name="User" table="APP_USER"
      < id
       column="ID"
       name="id"
       type="integer"
      >
      
      < generator class="assigned" /
      
      < /id
      
      < property
       column="LASTNAME"
       length="10"
       name="lastname"
       not-null="false"
       type="string"
       /
      
      < property
       column="FIRSTNAME"
       length="10"
       name="firstname"
       not-null="true"
       type="string"
       /
      
      < /class
      < /hibernate-mapping
      
       2 通過 hibernate synchronizer- synchronizer file 生成 User.java 文件 ,User 對象對應于 數據庫 中的 app_user

    注:在 eclipse 下自動生成的對象文件不完全相同,相同的是每個對象文件必須實現 Serializable 接口,必需又 toString hashCode 方法;
      
       import java.io.Serializable;
       import org.apache.commons.lang.builder.EqualsBuilder;
       import org.apache.commons.lang.builder.HashCodeBuilder;
       import org.apache.commons.lang.builder.ToStringBuilder;
       import org.apache.commons.lang.builder.ToStringStyle;
      
       public class BaseObject implements Serializable {
       public String toString() {
       return ToStringBuilder.reflectionToString(this,
       ToStringStyle.MULTI_LINE_STYLE);
       }
      
       public boolean equals(Object o) {
       return EqualsBuilder.reflectionEquals(this, o);
       }
      
       public int hashCode() {
       return HashCodeBuilder.reflectionHashCode(this);
       }
       }
      
       public class User extends BaseObject {
       private Long id;
       private String firstName;
       private String lastName;
      
       /**
       * @return Returns the id.
       */
      
       public Long getId() {
       return id;
       }
      
       /**
       * @param id The id to set.
       */
      
       public void setId(Long id) {
       this.id = id;
       }
      
       /**
       * @return Returns the firstName.
       */
      
       public String getFirstName() {
       return firstName;
       }
      
       /**
       * @param firstName The firstName to set.
       */
      
       public void setFirstName(String firstName) {
       this.firstName = firstName;
       }
      
       /**
       * @return Returns the lastName.
       */
      
       public String getLastName() {
       return lastName;
       }
      
       /**
       * @param lastName The lastName to set.
       */
      
       public void setLastName(String lastName) {
       this.lastName = lastName;
       }
       }
      
      創建 DAO 訪問對象
      
       1 src/com.jandar.service.dao 新建 IDAO.java 接口,所有的 DAO 都繼承該接口
      
       package com.jandar.services.dao;
      
       public interface IDAO
      
       2 src/com.jandar.service.dao 下新建 IUserDAO.java 接口
      
       public interface IUserDAO extends DAO {
       List getUsers();
       User getUser(Integer userid);
       void saveUser(User user);
       void removeUser(Integer id);
       }
      該接口提供了訪問對象的方法,
      
       3 src/com.jandar.service.dao.hibernate 下新建 UserDAOHiberante.java
      
       import java.util.List;
       import org.apache.commons.logging.Log;
       import org.apache.commons.logging.LogFactory;
       import org.springframework.orm.hibernate.support.HibernateDaoSupport;
       import com.jandar.model.User;
       import com.jandar.service.dao.IUserDAO;
      
       public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO {
      
       private Log log=LogFactory.getLog(UserDaoHibernate.class);

    /* (非 Javadoc
       * @see com.jandar.dao.IUserDAO#getUsers()
       */
      
       public List getUsers() {
       return getHibernateTemplate().find("from User");
       }
      
       /* (非 Javadoc
       * @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)
       */
      
       public User getUser(Integer id) {
       // TODO 自動生成方法存根
       return (User) getHibernateTemplate().get(User.class,id);
       }
      
       /* (非 Javadoc
       * @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)
       */
      
       public void saveUser(User user) {
       log.debug("xxxxxxx");
       System.out.println("yyyy");
       getHibernateTemplate().saveOrUpdate(user);
       if(log.isDebugEnabled())
       {
       log.debug("userId set to "+user.getId());
       }
       }
      
       /* (非 Javadoc
       * @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)
       */
      
       public void removeUser(Integer id) {
       Object user=getHibernateTemplate().load(User.class,id);
       getHibernateTemplate().delete(user);
       if(log.isDebugEnabled()){
       log.debug("del user "+id);
       }
       }
       }
      在這個類中實現了 IUserDAO 接口的方法,并且繼承了 HibernateDAOSupport 類。這個類的作用是通過 hibernate 訪問、操作對象,進而實現對數據庫的操作。

    posted on 2006-05-08 22:46 topquan 閱讀(510) 評論(0)  編輯  收藏 所屬分類: Spring

    主站蜘蛛池模板: 最近中文字幕无吗免费高清 | 中文字幕亚洲综合久久男男| 一个人看的免费视频www在线高清动漫| 亚洲精品无码不卡在线播HE| 在线视频免费观看高清| 日韩色视频一区二区三区亚洲 | 日韩毛片无码永久免费看| 国产精品成人啪精品视频免费| 久久亚洲私人国产精品vA| 日本一道综合久久aⅴ免费| 国产一区二区三区免费| 一区二区亚洲精品精华液| 国产午夜亚洲精品理论片不卡| 久久WWW免费人成人片| a级毛片免费全部播放无码| 亚洲色偷偷色噜噜狠狠99网| 亚洲精品乱码久久久久66| 午夜a级成人免费毛片| 99精品视频在线观看免费专区| 国产精品日本亚洲777| 亚洲最新中文字幕| 亚洲一级特黄大片在线观看| 可以免费看黄视频的网站| 国产麻豆一精品一AV一免费| www亚洲精品久久久乳| 亚洲免费观看在线视频| 亚洲AV无码久久精品色欲| 亚洲AV无码一区二区三区在线观看| 57pao一国产成视频永久免费| eeuss影院ss奇兵免费com| 亚洲欧美aⅴ在线资源| 亚洲色欲www综合网| 久久九九亚洲精品| 亚洲国产精品综合久久一线 | MM131亚洲国产美女久久| 成人免费视频88| **aaaaa毛片免费| 久久久99精品免费观看| 一个人看的www视频免费在线观看| 亚洲一久久久久久久久| 亚洲日本视频在线观看|