- 浏览: 175547 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
SimpleFunning:
ajax 怎么处理redirect 后台重定向 -
ykjsw:
java多态http://learn.jser.com/jav ...
Java知识积累:序列化、反序列化 -
xiayh04:
cs_wyx 写道用jxl很方便的啊我这边是不想应用第三方包的 ...
java生成excle column -
cs_wyx:
用jxl很方便的啊
java生成excle column -
sixinya:
ajax 怎么处理redirect 后台重定向
基于Annotation的SSH整合开发,其实,并没有我当初想像中那么顺利。真正去做的时候,才发觉有许多问题。但不要紧,探索一下吧。在探索
过程中学到知识,才是最重要的。
言归正传,现在,我们加入Spring的支持:把spring-
framework-2.5.5\dist中的spirng.jar
引进我们项目的lib目录来,还要添加\lib\aspectj\下的两个jar包
,以支持切面编程。
必要的配置文件还是要的:
applicationContext-common.xml


































































关键的两点:





这样配置之后,就省去了上面注释掉的DAO层和Service层等配置代码。是不是很方便呢。
关于这一部分的XML代码,我们下面还会作解释。
来开发我们的DAO层吧,接口如下:




















DAO层的实现类:












































大家可以看到,我们这里继承的不是HibernateDaoSupport,而是我自己编写的一个类 MyHibernateDaoSupport。其代码如下:


















我们之所以要改写HibernateDaoSupport,是因我为,我们要为DAO层的类注入SessionFactory这个属性。 以后,我们开发的DAO类,就可以直接重用这个MyHibernateDaoSupport了。其实,这样做是相当于配置文件方式的代 码:



我们既然要用annotation代替XML文件的,就要让它也能像原来那样使用sessionFactory,故为
MyHibernateDaoSupport注入SessionFactory。子类继承这个类时,也继承其Annotation。这样,我们就可以实现
SessionFactory的注入了。
到现在,我们再回过头来看applicationContext-common.xml中的






我们平时开发Hibernate与Spring整合时,常常会用到 org.springframework.orm.hibernate3.LocalSessionFactoryBean来提供 SessionFactory,而我们这里却要改成 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean。 其实是这样的,我们在Hibernate.cfg.xml中配置的实体类映射的方式如下:(详见基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (1) )






要使Hibernate的实体类支持注解,去掉xxx.hbm.xml的文件,故我们所用的是mapping
class方式,不是mapping
resource的方法。然而,LocalSessionFactoryBean这个类,它采用的实体类映射方式是mapping
resource,(详情可参见LocalSessionFactoryBean这个类的源代码)。如果我们在配置中仍然用这个类的
话,Hibernate与Spring整合时,就会报错。而AnnotationSessionFactoryBean这个类在
LocalSessionFactoryBean的基础上添加了mapping
class方式实现实体类映射(详见AnnotationSessionFactoryBean类的源代码)。
我们再来看Service层的代码:(接口比较简单,节约篇幅就不列出了)
























我们用到的注解上面一般都作了注释,就不多叙。@Autowired和@Resource功能差不多,就是把对象注入,相当
于<bean>配置的功能。
好,就开发到这样,是不是忘记了什么?记得要配置web.xml,部分代码如下:










是不是真的成功了?用Junit测试一下吧,我测试过是没问题的,由于篇幅,Junit的测试代码就不贴出来了。自己练习一下吧!
其实,到现在为止,我们发觉我们的XML配置文件还是很多。其实,这样想想,上一阶段我们省去了xxx.hbm.xml这类的文件,这一
阶段,我们少去了<bean id="" class=""><property name=""
ref="">这样的配置项。而这些,正是我们项目开发中,大量使用的配置。而只要书写简单的Annotation注解,就可以省去这样,我们何乐
而不用。而那些我们保留的XML配置文件(如:数据库连接,事务),这样是写死的,一个项目就写一次或复制过来用,我们保留它又何妨?
好,暂时到这里,我们还有下一阶段的基于Annotation的SSH整合开发,我们将会以一个用户注册的例子,把Struts2的注解
带到我们的整合开发中来。一起期待吧!
(*^-^*)
本文原创,转载请注明出处, http://www.blogjava.net/rongxh7
谢
谢! (*^-^*)
发表评论
-
垂直搜索技术及框架选型
2013-09-23 12:50 01、垂直搜索与一般搜索区别 2、垂直搜索框架比较 ... -
spring ehcache annotation 配置
2013-08-05 23:38 0jdbc.properties #hibernate ... -
临时存放资料共享
2013-07-22 22:25 0临时存放资料共享: http://pan.baidu.c ... -
链接共享 临时存放
2013-07-22 22:24 1临时存放资料共享: http://pan.baidu.c ... -
用Ant自动测试JUnit spring
2013-07-10 21:52 0http://blog.csdn.net/shendl/ar ... -
JUnit+Ant自动化执行单元测试并生成报告
2013-07-10 21:47 0http://aofengblog.blog.163 ... -
ant junit spring集成
2013-07-10 21:42 0Spring框架下利用Ant进行自动测试 ... -
自己保留
2013-07-04 20:47 0自己保留 临时中转 -
Spring+JPA+MySQL的配置文件(2)
2010-10-18 10:45 1487Xml代码 <?xml version=& ... -
struts 2 国际化 中文乱码
2010-09-21 16:45 1324在线native2ascii工具:http://www. ... -
了解什么是Spring 事务管理
2010-08-10 13:25 2213事务,确实是一个极为抽象的概念,我理解为就是一个连续的东西 ... -
相关jar官方下载地址(Hibernate Spring Structs等)
2010-07-19 14:21 1230Hibernate 相关jar下载: http://sourc ... -
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发(3/3)
2010-07-19 12:14 824进入我们基于Annotation的Struts ... -
基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发(1/3)
2010-07-19 12:13 969写这个主题的文章在网络上应该暂时没有吧,也看过许多SSH整合开 ... -
拦截器和过滤器的区别
2010-05-18 11:45 1275很多人都了解 过滤器也听说过拦截器,但是要是区分它们的不 ... -
Java EE 5.0能取代Struts,Spring和Hibernate吗?
2010-05-18 01:15 1203http://blog.csdn.net/Jimbo_King ... -
JPA注解 hibernate
2010-05-17 23:47 1090JPA注解 1、@Entity(name="Ent ...
相关推荐
【基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发】 这篇文档主要介绍了一个使用注解(Annotation)进行Struts2.0、Hibernate3.3和Spring2.5整合开发的教程。这种集成方式相比传统的XML配置,可以简化...
总的来说,基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发利用注解简化了配置,提高了开发效率,使得代码更加可读,降低了出错的可能性。然而,需要注意的是,虽然注解使得配置文件减少,但过多的注解也...
标题中的“基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发”指的是使用注解的方式将三个流行的Java企业级框架——Struts2、Hibernate和Spring进行集成开发。这样的集成有助于简化配置,提高代码的可读性...
Struts1.3、Hibernate3.3和Spring3.0是经典的Java企业级开发框架,它们的整合在早期Web应用开发中非常常见。这三种框架的结合提供了模型-视图-控制器(MVC)架构、对象关系映射(ORM)以及依赖注入(DI)和面向切面...
Struts2.0、Hibernate3.0和Spring2.0是Java Web开发中经典的三大框架,它们的整合是企业级应用开发的常见实践。Struts2作为MVC(Model-View-Controller)框架,主要负责处理HTTP请求并调度业务逻辑;Hibernate是一个...
总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...
Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...
在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境进行配置。 **1. Java8**: 作为项目的运行基础环境,确保已安装Java8,并正确设置JAVA_HOME等环境变量。 **2....
整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
这个“基于Struts2.18+Spring2.5+Hibernate3.3+Annotation注解开发的电子商务网站demo”是一个很好的学习资源,可以帮助开发者加深对这些框架的理解并熟悉实际应用。 1. **Struts2.18**:Struts2是MVC(模型-视图-...
2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....
Struts2、Spring2.5和Hibernate3是Java Web开发中的三大框架,它们的整合是构建企业级应用的常见方式。这个"Struts2+Spring2.5+Hibernate3+annotation 整合程序"旨在展示如何将这三大框架与注解(Annotation)技术...
SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...
本文档主要介绍了如何在MyEclipse 8.6环境中搭建一个基于Struts2.1、Spring3.0和Hibernate3.3的Java Web应用开发环境。以下是各个部分的详细说明: 1. 创建Web Project项目 在MyEclipse中创建Web Project是开始...
Struts2、Hibernate3和Spring2.5是Java Web开发中的三大框架,它们各自负责不同的职责,但可以协同工作以构建高效的企业级应用。这里主要讨论的是如何将这三者结合,并利用注解(Annotation)进行配置,以简化开发...