java

位置:IT落伍者 >> java >> 浏览文章

Struts+Spring+Hibernate快速入门


发布日期:2019年10月06日
 
Struts+Spring+Hibernate快速入门

本文是开发基于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访问操作对象进而实现对数据库的操作

上一篇:Hibernate利用XDoclet自动生成配置文件

下一篇:Struts Logic标签汇总与说明