SSH SSMとコントラストの類似点と相違点、彼らの強み

1SSHとSSMは、定義
通常Struts2のことをいうSSHをコントローラ(アクション)、管理春の成分層を行い、Hibernateの永続層が担っています。

SSMはSpringMVCコントローラ(制御装置)、管理春、永続層の責任MyBatisの成分の層を行うための手段です。

共通:

    1.Spring依存性注入DIは、各層の構成要素を管理します。

    アスペクト指向プログラミングAOPを使用して2.の事、ログ、およびその他の権限を管理します。

違い:

    1.Struts2と相互作用モデルとビューの異なる機構を制御SpringMVCコントローラ(制御装置)

    2.Struts2は、Actionクラスレベルで、SpringMVCは簡単にRESTfulなスタイルを実現するために、メソッドレベルです。

原則2SSHとSSM


Struts2の実装の原則:


Struts2のフレームワークステップ(Struts2のフィルタインサートを使用して)。

図1に示すように、クライアントが開始(Tomcatなど)ポインティングサーブレットコンテナ要求

図2に示すように、一連のフィルタ(フィルタ)を介して要求(これらのフィルタは、このフィルタを一体化し、他のフレームワークStruts2のに有用である、ActionContextCleanUpオプションのフィルタと呼ばれています

3、その後、FilterDispatcherが呼び出され、FilterDispatcherは、要求ActionMapperの必要性がアクションを呼び出すかどうかを判断するように求め

4、ActionMapperはActionProxyへのリクエストの処理FilterDispatcher、あなたがアクションを呼び出す必要があるかどうかを判断します

5、アクションクラスを呼び出す必要性を見つけるために、設定ファイル構成マネージャ問い合わせフレームを通じてActionProxy

6、ActionProxyはActionInvocationのインスタンスを作成します。

7、呼び出し、アクション・プロシージャ・コールの前または後に、関連するインターセプタを含む呼び出しが(インターセプタがある)という命名方式ActionInvocationインスタンス。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。

9、将处理结果返回给客户端

SpringMVC 的实现原理:


SpringMVC框架执行步骤(SpringMVC使用Servlet嵌入):

1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.

2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。

3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。

5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。

6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。

7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

3Hibernater和Mybatis对比


两者的相同点

Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

Hibernate和MyBatis都支持JDBC和JTA事务处理。

两者各自优势

MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

MyBatis容易掌握,而Hibernate门槛较高。

Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳,更新操作不能指定刷新指定记录,会清空整个表,但是也可以使用第三方缓存。

Hibernate 封装性好,屏蔽了数据库差异,自动生成SQL语句,应对数据库变化能力较弱,SQL语句优化困难。

MyBatis仅实现了SQL语句和对象的映射,需要针对具体的数据库写SQL语句,应对数据库变化能力较强,SQL语句优化较为方便。

4总结
SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hiibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。

附Spring家族:

おすすめ

転載: www.cnblogs.com/hmit/p/11867941.html