熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Struts+Spring+Hibernate快速入門

2013-11-23 20:32:33  來源: Java開源技術 

  本文是開發基於spring的web應用的入門文章前端采用Struts MVC框架中間層采用spring後台采用Hibernate
  
  本文包含以下內容
  
  ·配置Hibernate和事務
  
  ·裝載Spring的applicationContextxml文件
  
  ·建立業務層和DAO之間的依賴關系
  
  ·將Spring應用到Struts中
  
  簡介
  
  這個例子是建立一個簡單的web應用叫MyUsers完成用戶管理操作包含簡單的數據庫增該即CRUD(新建訪問更新刪除)操作這是一個三層的web應用通過Action(Struts)訪問業務層業務層訪問DAO圖一簡要說明了該應用的總體結構圖上的數字說明了流程順序-從web(UserAction)到中間層(UserManager)再到數據訪問層(UserDAO)然後將結果返回
  
  Spring層的真正強大在於它的聲明型事務處理幫定和對持久層支持(例如Hiberate和iBATIS)
  
  以下下是完成這個例子的步驟
  
  . 安裝Eclipse插件
  
  . 數據庫建表
  
  . 配置Hibernate和Spring
  
  . 建立Hibernate DAO接口的實現類
  
  . 運行測試類測試DAO的CRUD操作
  
  . 創建一個處理類聲明事務
  
  . 創建web層的Action和model
  
  . 運行Action的測試類測試CRUD操作
  
  . 創建jsp文件通過浏覽器進行CRUD操作
  
  . 通過浏覽器校驗jsp
  
  安裝eclipse插件
  
  . Hibernate插件
  
  . Spring插件ide/eclipse/updatesite/
  
  . MyEclipse插件(破解版)
  
  . Tomcat插件 tanghan
  
  . 其他插件包括xmljsp
  
  數據庫建表
  
  create table app_user(id number not null primaryfirstname vchar()lastname vchar());
  
  新建項目
  
  新建一個web project新建後的目錄結構同時包含了新建文件夾page用於放jsp文件和源文件夾test用於放junit測試文件同時將用到的包包括strutshibernatespring都導入到lib目錄下
  
  創建持久層O/R mapping
  
  . 在src/comjandarmodel下用hibernate插件從數據庫導出app_user的hbmxml文件改名為Userhbmxml
  
  <?xml version=?>
  <!DOCTYPE hibernatemapping PUBLIC
  //Hibernate/Hibernate Mapping DTD//EN
  mappingdtd
  <hibernatemapping package=comjandarmodel
  <class name=User table=APP_USER
  <id
  column=ID
  name=id
  type=integer
  >
  
  <generator class=assigned />
  
  </id>
  
  <property
  column=LASTNAME
  length=
  name=lastname
  notnull=false
  type=string
  />
  
  <property
  column=FIRSTNAME
  length=
  name=firstname
  notnull=true
  type=string
  />
  
  </class>
  </hibernatemapping>
  
  . 通過hibernate synchronizer>synchronizer file生成Userjava文件User對象對應於數據庫中的app_user表
  
  注在eclipse下自動生成的對象文件不完全相同相同的是每個對象文件必須實現Serializable接口必需又toString和hashCode方法
  
  import javaioSerializable;
  import monslangbuilderEqualsBuilder;
  import monslangbuilderHashCodeBuilder;
  import monslangbuilderToStringBuilder;
  import monslangbuilderToStringStyle;
  
  public class BaseObject implements Serializable {
  public String toString() {
  return ToStringBuilderreflectionToString(this
  ToStringStyleMULTI_LINE_STYLE);
  }
  
  public boolean equals(Object o) {
  return EqualsBuilderreflectionEquals(this o);
  }
  
  public int hashCode() {
  return HashCodeBuilderreflectionHashCode(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) {
  thisid = id;
  }
  
  /**
  * @return Returns the firstName
  */
  
  public String getFirstName() {
  return firstName;
  }
  
  /**
  * @param firstName The firstName to set
  */
  
  public void setFirstName(String firstName) {
  thisfirstName = firstName;
  }
  
  /**
  * @return Returns the lastName
  */
  
  public String getLastName() {
  return lastName;
  }
  
  /**
  * @param lastName The lastName to set
  */
  
  public void setLastName(String lastName) {
  thislastName = lastName;
  }
  }
  
  創建DAO訪問對象
  
  . 在src/comjandarservicedao新建IDAOjava接口所有的DAO都繼承該接口
  
  package comjandarservicesdao;
  
  public interface IDAO
  
  . 在src/comjandarservicedao下新建IUserDAOjava接口
  
  public interface IUserDAO extends DAO {
  List getUsers();
  User getUser(Integer userid);
  void saveUser(User user);
  void removeUser(Integer id);
  }
  該接口提供了訪問對象的方法
  
  . 在src/comjandarservicedaohibernate下新建UserDAOHiberantejava
  
  import javautilList;
  import monsloggingLog;
  import monsloggingLogFactory;
  import orgspringframeworkormhibernatesupportHibernateDaoSupport;
  import comjandarmodelUser;
  import comjandarservicedaoIUserDAO;
  
  public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO {
  
  private Log log=LogFactorygetLog(UserDaoHibernateclass);
  /* (非 Javadoc)
  * @see comjandardaoIUserDAO#getUsers()
  */
  
  public List getUsers() {
  return getHibernateTemplate()find(from User);
  }
  
  /* (非 Javadoc)
  * @see comjandardaoIUserDAO#getUser(javalangLong)
  */
  
  public User getUser(Integer id) {
  // TODO 自動生成方法存根
  return (User) getHibernateTemplate()get(Userclassid);
  }
  
  /* (非 Javadoc)
  * @see comjandardaoIUserDAO#saveUser(comjandarmodelUser)
  */
  
  public void saveUser(User user) {
  logdebug(xxxxxxx);
  Systemoutprintln(yyyy);
  getHibernateTemplate()saveOrUpdate(user);
  if(logisDebugEnabled())
  {
  logdebug(userId set to +usergetId());
  }
  }
  
  /* (非 Javadoc)
  * @see comjandardaoIUserDAO#removeUser(javalangLong)
  */
  
  public void removeUser(Integer id) {
  Object user=getHibernateTemplate()load(Userclassid);
  getHibernateTemplate()delete(user);
  if(logisDebugEnabled()){
  logdebug(del user +id);
  }
  }
  }
  在這個類中實現了IUserDAO接口的方法並且繼承了HibernateDAOSupport類這個類的作用是通過hibernate訪問操作對象進而實現對數據庫的操作
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28642.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.