Let's Go!

java中的ssh框架

上一篇 / 下一篇  2011-01-11 10:09:16 / 个人分类:JAVA学习&编程相关

http://wenwen.soso.com/z/q104191536.htm

struts框架 hibernate框架 spring框架
结合方式: 1. struts + hibernate
2. spring + hibernate
3. ssh结合
请高手们谈下 那种结合比较好

问题补充   个人感觉 struts 跟 spring 功能都差不多 只不过struts是继承 spring是接口
ssh结合的话 C层感觉有点乱 功能冲突
ssh结合有必要吗? 有什么特点啊?

 

你说的3中方式我都用过,结合3年的工作经验,人认为ssh结合最好用,spring管理事物处理,struts控制页面跳转,hibernate处理数据层东西,各司其职,如果单单的用其中的一种或者两中都有很大的不方便。struts建议采用struts2,比struts1好用的多。。。答案补充 建议楼主每个框架结合都做一个简单的项目,只有自己真正动手做过,才能真正体会到你这个问题的结果。

 

说分多少层,每层干什么用都是假的,到最后还是根据实际需要来分层。
你做个最简单的程序,像学校的习题或者毕业设计之类的,根本就不用分层照样能满足需求

没有最好,只有最合适。

你喜欢怎么用就怎么用,你觉得不用某一层那你就别用,到你感觉不够用的时候,你对原来没用的那一层理解会非常深。人家说什么就照做,永远只能停留于表面理解,无法深刻体会。

 

 

在项目中,SSH分为三层:Struts表示层,Spring业务逻辑层,Hibernate持久化层。具体来说,是这样的:(7)Struts框架提供了极丰富的视图组件,扩展了Web应用。Hibernate实现对象-关系映射(ORM),封装操作的数据库语句。Spring是一个依赖于控制反转(Inversion of Control,IoC)设计模式的轻量级框架,具有很好的松散耦合特性,Spring对Hibernate提供大量的封装好的类。在这里我们可以看到SSH的完美结合,整合后项目得到了最大的优化,因为(讲Spring整合)Struts中Action的实例生成不再由Struts自己负责,而交Spring容器去管理 。Hibernate的SessionFactory的配置交于了Spring,即我们可以不要hibernate.cfg.xml,而将sessionFactory的配置作为bean来交给Spring的配置文件等。Spring对Hibernate进行了封装,而Hibernate对数据库进行了封装。它们的完美结合使项目更加完善。

 

更详细一点的看下面

表示层(The Presentation Layer)
一般来讲,一个典型的Web应用的的末端应该是表示层。 很多Java发者也理解Struts所提供的。 象业务逻辑之类的被打包到org.apache.struts.Action., 因此,我们很赞成使用Struts这样的框架。
下面是Struts所负责的:
* 管理用户的请求,做出相应的响应。
* 提供一个Controller ,委派调用业务逻辑和其它上层处理。
* 处理异常,抛给Struts Action
* 为显示提供一个模型
* UI验证。
以下条款,不该在Struts显示层的编码中经常出现。 它们与显示层无关的。
* 直接的与数据库通信,例如JDBC调用。
* 与你应用程序相关联的业务逻辑以及校验。
* 事物管理。
在表示层引入这些代码,则会带来高偶合和麻烦的维护。

持久层(The Persistence Layer)
典型的Web应用的另一个末端是持久层。这里通常是程序最容易失控的地方。开发者总是低估构建他们自己的持久框架的挑战性。系统内部的持续层不但需要大量调试时间,而且还经常缺少功能使之变得难以控制,这是持久层的通病。 还好有几个ORM开源框架很好的解决了这类问题。尤其是Hibernate。 Hibernate为java提供了OR持久化机制和查询服务, 它还给已经熟悉SQL和JDBC API 的Java开发者一个学习桥梁,他们学习起来很方便。 Hibernate的持久对象是基于POJO和Java collections。此外,使用Hibernate并不妨碍你正在使用的IDE。
请看下面的条目,你在持久层编码中需要了解的。
* 查询对象的相关信息的语句。 Hibernate通过一个OO查询语言(HQL)或者正则表达的API来完成查询。 HQL非常类似于SQL-- 只是把SQL里的table和columns用Object和它的fields代替。 你需要学习一些新的HQL语言; 不管怎样,他们容易理解而文档也做的很好。 HQL是一种对象查询的自然语言,花很小的代价就能学习它。
* 如何存储,更新,删除数据库记录。
* 象Hibernate这类的高级ORM框架支持大部分主流数据库,并且他们支持 Parent/child关系,事物处理,继承和多态。

业务层(The Business Layer)
一个典型Web应用的中间部分是业务层或者服务层。 从编码的视角来看,这层是最容易被忽视的一层。 而我们却往往在UI层或持久层周围看到这些业务处理的代码,这其实是不正确的,因为它导致了程序代码的紧密偶合,这样一来,随着时间推移这些代码很难维护。幸好,针对这一问题有好几种Frameworks存在。 最受欢迎的两个框架是Spring和PicoContainer。 这些为也被称为microcontainers,他们能让你很好的把对象搭配起来。 这两个框架都着手于‘依赖注射’(dependency injection)(还有我们知道的‘控制反转’Inversion of Control=IoC)这样的简单概念。 这篇文章将关注于Spring的注射(译注:通过一个给定参数的Setter方法来构造Bean,有所不同于Factory), Spring还提供了Setter Injection(type2),Constructor Injection(type3)等方式供我们选择。 Spring把程序中所涉及到包含业务逻辑和Dao的Objects——例如transaction management handler(事物管理控制)、Object Factoris(对象工厂)、service objects(服务组件)——都通过XML来配置联系起来。
后面我们会举个例子来揭示一下Spring 是怎样运用这些概念。
业务层所负责的如下:
* 处理应用程序的 业务逻辑和业务校验
* 管理事物
* 允许与其它层相互作用的接口
* 管理业务层级别的对象的依赖。
* 在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起。
* 通过揭示 从显示层到业务层之间的Context来得到business services。
* 管理程序的执行(从业务层到持久层)。

Spring框架和Hibernate框架有较大的区别,Hibernate是一个对象持久化工具,通过其强大的O/R映射功能将Java对象与存放于关系数据库中的数据进行映射,避免了开发人员使用大量的SQL语句,通过JDBC底层编程的方式对数据库进行操作。一般来说,业务层适合用Spring,而持久层适合用Hibernate。
Spring框架最大的优点是可以动态替换业务对象;核心是一个实现了IoC(Inversion of Control)模式的轻量级容器(Container);是开发效率很高,使用POJO(纯粹Java对象)的,优秀的轻量级的J2EE开发框架。
关于什么时候使用这些框架,在项目比较大的时候使用,会大大节省开发成本的投入,大家都按照统一的标准来,能节约时间。但是如果项目很小,那还是不要使用了,因为使用框架需要配置很多东西,会觉得乱七八糟的,完全没有必要了,用一句话来说就是杀鸡焉用牛刀。

 

 

 

我感觉spring和struts 结合并不是太好,spring 和 hibernate结合很好使,不过我感觉spring的mvc不如struts好使,所以
平常用的还是ssh多,但是hibernate在复杂的数据库中并不好使,在复杂的数据库时,还是用jdbc。或ibatis

答案补充

spring功能要比sturts多,在着实现接口要比继承更灵活,
结合后只是spring 将hibernate的一些东西包涵了,
用的灵活的话结合后,开发简单而且快,不熟悉的话反而更乱

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar