Struts+Spring+Hibernate整合的简单实例
通过Struts+Spring+Hibernate来实现一个简单的增删改查操作。我们分三层处理这个应用:一、表现层,我们使用Struts实现,负责处理用户请求,提供一个控制其代理。不适合在这层出现JDBC以及业务逻辑。二、持久层,使用Hibernate来查询相关信息、保存更新和删除数据库信息。业务逻辑同样不适合出现在该层。三、业务层,使用Spring来连接Bean,实现业务逻辑和业务验证,预留接口,管理业务层对象之间的依赖。这里程序通过edit,index和input.jsp三个页面实现对数据的增删改查操作。
整合SSH的步骤为:
1.新建WEB项目
MyEclipse下使用快捷键Alt+Shift+N新建一个WebProject项目,命名为SSH_example,选择JavaEE5.0。
2.增加Hibernate、Spring开发能力
导入Hibernate开发能力,注意最后一项时不要创建sessionFactory类。Spring导入Cord、AOP、persistenceCore、persistenceJDBC和WebLibraries五个库。最后创建SessionFactory类,使用Spring容器进行统一管理。
3.增加POJO类文件和Hibernate映射文件
打开DataBaseExplorer视图,将表test生成POJO类和映射文件。这些文件放在com.sshexample.model中。
4.编写DAO接口和实现类
DAO接口放在包com.sshexample.dao中,代码为:
[java]viewplaincopy
packagecom.sshexample.dao;
importjava.util.List;
importcom.sshexample.model.Test;
publicinterfaceTestDao{
//保存
publicvoidsave(Testt);
//删除
publicvoiddelete(Integeri);
//获得所有对象
publicListgetAll();
Struts+Spring+Hibernate整合的简单实例
//获得一个对象
publicTestgetTest(Integerid);
}
其实现类代码实现该接口的同时继承自HibernateDaoSupport超类,放置在包com.sshexample.dao.hibernate中,实现了增删改查的具体操作,代码如下:
[java]viewplaincopy
packagecom.sshexample.dao.hibernate;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; importcom.sshexample.dao.TestDao;
importcom.sshexample.model.Test;
publicclassTestDaoHibernateextendsHibernateDaoSupportimplementsTestDao{
publicvoiddelete(Integerid){
this.getHibernateTemplate().delete(getTest(id));
}
publicListgetAll(){
returnthis.getHibernateTemplate().find("fromTest");
}
publicTestgetTest(Integerid){
return(Test)this.getHibernateTemplate().get(Test.class,id);
}
publicvoidsave(Testt){
this.getHibernateTemplate().saveOrUpdate(t);
}
Struts+Spring+Hibernate整合的简单实例
}
5.编写服务层接口和实现类
在包com.sshexample.service中,新建服务层接口TestManager,定义增删改查操作接口,这里的增删改查和DAO接口操作类似,但服务对象则是Web层,可能会有一些启发方法。而DAO中,只声明了数据库基本操作。在
com.sshexample.service.impl中定义TestManagerImpl实现类,实现了上文中的TestManager接口。
接口TestManager代码为:
[java]viewplaincopy
packagecom.sshexample.service;
importjava.util.List;
importcom.sshexample.model.Test;
publicinterfaceTestManager{
//保存
publicvoidsave(Testt);
//删除
publicvoiddelete(Stringid);
//获得所有对象
publicListgetAll();
//获得一个对象
publicTestgetTest(Stringid);
}
实现类TestManagerImpl代码为:
[java]viewplaincopy
packagecom.sshexample.service.impl;
Struts+Spring+Hibernate整合的简单实例
importjava.util.List;
importcom.sshexample.dao.TestDao;
importcom.sshexample.model.Test;
importcom.sshexample.service.TestManager;
publicclassTestManagerImplimplementsTestManager{
privateTestDaotestDao;
publicTestDaogetTestDao(){
returntestDao;
}
publicvoidsetTestDao(TestDaotestDao){
this.testDao=testDao;
}
publicvoiddelete(Stringid){
testDao.delete(newInteger(id));
}
publicListgetAll(){
returntestDao.getAll();
}
publicTestgetTest(Stringid){
returntestDao.getTest(newInteger(id));
}
publicvoidsave(Testt){
testDao.save(t);
}
}
6.修改Spring配置文件
在Spring配置文件applicationContext.xml文件的源码格式下,右击选Spring->newDataSource,新建一个数据源Bean。设值为之前的
SQLServer2005Conn,如果提示出错,可能需要附加SpringPersistenceJDBC库。再新建一个Bean,ID为testDao,class为上文中实现了DAO操作的具体类testDaoHibernate。在其中添加一个属性sessionFactory作为注入的入口。注意保持name栏和具体实现类testDaoHibernate中得方法setTestDao方法名的后半段一致,以方便注入。
Struts+Spring+Hibernate整合的简单实例
7.增加Struts开发能力
附加struts开饭能力,选择Struts1.3版本,将基础包修改为
com.sshexample.web。
8.新建FormBean
修改Struts-config.xml文件,新建一个From,ActionandJSP项目,用例名为test,表格类型为动态表格,添加一个属性为name。下一步进行Action类配置,超类选择分发器动作dispatchAction。去掉输入源前面的form。
9.编辑Action类TestAction.java实现了操作。
Struts+Spring+Hibernate整合的简单实例
[java]viewplaincopy
packagecom.sshexample.web.action;
importjava.util.List;