应用处理中框架选择和设计

举报
码乐 发表于 2024/04/10 08:26:12 2024/04/10
【摘要】 1 简介软件工程实施中难免架构设计的过程,无论多大多小,总有设计的影子。 骨架和结构如何设计更合适?比如分层中的三层架构设计,瘦客户端,胖客户端。表示层,功能层,数据层等。这里简单介绍java语言中曾经(现在也很有用)非常经典的架构(框架)的设计方法。 2 Struts 框架Struts 是一个基于 SUN J2EE 平台的 MVC 框架,主要是采用 Servlet和JSP 技术来实现的...

1 简介

软件工程实施中难免架构设计的过程,无论多大多小,总有设计的影子。 骨架和结构如何设计更合适?

比如分层中的三层架构设计,瘦客户端,胖客户端。表示层,功能层,数据层等。

这里简单介绍java语言中曾经(现在也很有用)非常经典的架构(框架)的设计方法。

2 Struts 框架

Struts 是一个基于 SUN J2EE 平台的 MVC 框架,主要是采用 Servlet和JSP 技术来实现的。在 Struts 框架中。

模型由实现业务逻辑的 JavaBean 或 EJB 构件构成,控制器由 ActionServlet 和 Action 来实现,视图由一组JSP 文件构成。

3 Spring框架

Spring 是一个开源框架,它是为了解决企业应用开发的复杂性而创建的框架的主要优势之一就是其分层架构。

分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情,然而,Spring 的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring中受益。
Spring 的核心是控制反转(IoC)和面向切面(AOP)简单来说。Spring是一个分层的 JavaSE/EE full-stack(一站式)轻量级开源框架。

控制反转 IoC(Inversion of Control)是说创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自已把控的,而现在这种权力转移到第三方,比如转移交给了 IoC 容器.

它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC 容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖 IoC 容器了,通过 oC 容器来建立它们之间的关系.

image.png

4 Hibernate框架

Hibernate 是一个开源的对象关系映射框架,
它对JDBC 进行了非常轻量级的对象封装。

将 POJO(普通的 Java 对象) 与数据库表建立映射关系,
是一个全自动的 ORM 框架,甚至自动生成 SQL语句,自动执行。

因此,程序员可以随心所有地使用对象编程思维来操纵数据库。

image.png

5 Mybatis 框架

该数据避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
Mybatis可以使用简单的 xml 或注解来配置和映射原生信息,将接口和JAVA 的 POJOS映射成数据库的记录。

6 对比

  • Spring框架的优点

(1) 方便解耦,简化开发 (高内聚低合)
Spring 就是一个大工厂 (容器),可以将所有对象创建和依赖关系维护交给 Spring 管理,Spring 工厂是用于生成 bean.

(2) AOP 编程的支持
Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

(3) 声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。

(4)方便程序的测试
Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序。

(5)方便集成各种优秀架
Spring 不排斥各种优秀的开源框架,
其内部提供了对各种优秀框架 (如:Struts、Hibernate、MyBatis、Quartz 等) 的直接支持。

(6)降低 JavaEE API 的使用难度
Spring 对JavaEE 开发中非常难用的一些API (JDBC、JavaMail、远程调用都提供了封装,使这些 API 应用难度大大降低

  • Mybatis与 Hibernate 的区别:
  1. 开发方面:Hibernate 开发中,sql语句已经被封装,直接可以使用;Mybatis 属于半自动化,sql 需要手工完成

  2. sql 优化方面: 对复杂查询的 sql 语进行人工调优的时候,Mybatis 更方便

  3. 可移植性方面: Hibernate 使用时自动生成相应的 sql 语句,因此具备良好的数据库移植性
    而 Mybatis 中手动编写的 sql 语需要针对不同厂商的数据库进行修改.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。