【新版】系统架构设计师 - 软件架构设计<轻量级架构>

个人总结,仅供参考,欢迎加好友一起讨论
文章目录
- 架构 - 软件架构设计<轻量级架构>
- 考点摘要
- 轻量级架构
- 表示层
- 业务逻辑层
- 持久层
- 数据库
- SSH与SSM
- ORM
- Hibernate与Mybatis
架构 - 软件架构设计<轻量级架构>
考点摘要
- 基本概念(★)
- SSH(★★)
- SSM(★★)
轻量级架构
表示层
用户界面的逻辑位于最顶层。表现层负责把用户要求的业务逻辑处理结果以可视化的友好的方式返回给用户,并提供接受用户命令的接口和表现层页面控制逻辑的代码。
业务逻辑层
业务逻辑层负责处理问题领域的业务规则和根据用户需求进行的业务处理以满足用户的功能需求。通常情况下,业务逻辑层处理使用的实体对象由持久层提供。
持久层
数据通过持久层进行持久化。所谓持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久层的设计,使得业务逻辑层只需要负责业务逻辑的实现,而把对数据的操作交给了持久层。持久层对数据及对数据操作的封装有以下几个优点︰
- 屏蔽数据库平台的变化对业务逻辑层的影响。当数据库变化时,只需修改持久层操作数据库的代码,而持久层提供给业务逻辑的对象模型没有变化,从而避免了业务逻辑的修改。
- 通过持久层的封装处理,可以在持久层实现支持多种数据库平台,而对业务逻辑层提供统一的接口。
- 代码可重用性高,能够完成所有的数据库访问操作。
通过持久层的设计,将复杂的业务逻辑和数据逻辑分离,降低系统的耦合程度,从而在开发时更明确地进行分工,维护工作也更容易进行,系统的体系结构也变得更加清晰。
数据库
数据存储。
SSH与SSM
SSH概念:
SSH指的是Struts2(做前端控制器),Spring(管理各层的组件),Hibernate(负责持久化层)。
SSM概念:
SSM指的是SpringMVC(做前端控制器),Spring(管理各层的组件),Mybatis(负责持久化层)。
| 所在分层 | SSH | SSM |
|---|---|---|
| 页面层(View) | JSP | JSP |
| 控制器层(Controller) | Struts2 | SpringMVC |
| 业务层(Service) | Java | Java |
| 持久层(Dao) | Hibernate | Mybatis |
| 数据库层(DB) | 各种数据库 | 各种数据库 |
| 组件管理层(Bean) | Spring | Spring |
ORM
ORM(Object Relational Mapping):对象与关系数据之间的映射。
| 面向对象 | 关系数据库 |
|---|---|
| 类(Class) | 数据库得表(Table) |
| 对象(Object) | 记录(Record,行数据) |
| 对象的属性(Attribute) | 字段(Field) |
Hibernate与Mybatis
| Hibernate | Mybatis | |
|---|---|---|
| 简单对比 | 强大,复杂,间接,SQL无关 | 小巧,简单,直接,SQL相关 |
| 可移植性 | 好(不关心具体数据库) | 差(根据数据库SQL编写) |
| 复杂多表关联 | 不支持 | 支持 |
- 开发方面:Hibernate开发中,SQL语句已经被封装,直接可以使用;Mybatis属于半自动化,SQL需要手工完成。
- SQL优化方面:对复杂查询的SQL语句进行人工调优的时候,Mybatis更方便。
- 可移植性方面:Hibernate使用时自动生成相应的sql语句,因此具备良好的数据库移植性,而Mybatis中手动编写的SQL语句需要针对不同厂商的数据库进行修改。
相关文章:
【新版】系统架构设计师 - 软件架构设计<轻量级架构>
个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 软件架构设计<轻量级架构>考点摘要轻量级架构表示层业务逻辑层持久层数据库 SSH与SSMORMHibernate与Mybatis 架构 - 软件架构设计<轻量级架构> 考点…...
系统架构设计专业技能 ·结构化需求分析 - 数据流图
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 结构化需求分析 - 数据流图 一、数据流图的基本概念二、需…...
linux内核分析:线程和进程创建,内存管理
lec18-19:进程与线程创建 lec20-21虚拟内存管理 内核代码,全局变量这些只有一份,但是内核栈有多份,这可能就是linux线程模型1对1模式的由来。通过栈来做的 x86 CPU支持分段和分页(平坦内存模式)两种 分段,选择子那里就有特权标记了...
SpringMvc根据返回值类型不同处理响应
目录 一、介绍 二、返回值为void (1)控制层方法 三、返回值为String (1)控制层 四、返回值为ModelAndView (1)控制层方法 (2)jsp页面 一、介绍 我们可以通过控制器方法的返回…...
jq命令安装与使用
目录 一、简介二、下载及安装1.Linux 安装2.Windows 安装3.测试安装结果 三、jq用法1.基本语法2.常见用法1)格式化 JSON2)获取属性3)属性不存在情况处理4)数组遍历、截取、展开5)管道、逗号、加号6)数据构造…...
网络面试题汇总
简述 TCP 连接的过程(淘系) 参考答案: TCP 协议通过三次握手建立可靠的点对点连接,具体过程是: 首先服务器进入监听状态,然后即可处理连接 第一次握手:建立连接时,客户端发送 syn 包…...
Java————初始集合框架
一 、 集合框架 Java 集合框架Java Collection Framework ,又被称为容器container , 是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中, 用于对这些元素进行快速、便捷的存…...
SpringMvc如何向context域设置数据
目录 (1)控制层方法 (2)jsp页面 context作用域表示在整个应用范围都有效。在SpringMVC中对context作用域传值,只能使用ServletContext对象来实现。但是该对象不能直接注入到方法参数中,需要通过HttpSessi…...
深入探索智能问答:从检索到生成的技术之旅
目录 一、智能问答概述1. **语义理解**2. **知识库和数据库**3. **上下文感知**4. **动态学习和自适应** 二、发展历程1. **基于规则的系统**2. **统计方法的兴起**3. **深度学习和神经网络的突破**4. **预训练模型** 三、智能问答系统的主要类型四、基于知识库的问答系统五、基…...
02_Flutter自定义Sliver组件实现分组列表吸顶效果
02_Flutter自定义Sliver组件实现分组列表吸顶效果 一.先上效果图 二.列表布局实现 比较简单,直接上代码,主要使用CustomScrollView和SliverToBoxAdapter实现 _buildSection(String title) {return SliverToBoxAdapter(child: RepaintBoundary(child: C…...
uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)
效果图如下: 思路: 1.首先我想到的就是使用图标库echarts或ucharts,可是找了找没有找到类似的。 2.其次我就想用画布来实现这个效果,直接上手。(app-vue和小程序均可以实现,但是在app-nvue页面不支持画布…...
Oracle for Windows安装和配置——2.1.Oracle for Windows安装
2.1.1. 准备Oracle软件 1)下载或拷贝安装软件 下载地址:otn.oracle.com或my oracle support。下载文件列表。具体如图2.1.1-1所示。 图2.1.1-1 下载文件列表 --说明: 1)通过otn.oracle.com站点,可以免费下载用于安装的Oracle…...
2.SpringEL bean引用实例
SpringEL bean引用实例 文章目录 SpringEL bean引用实例介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 在Spring EL,可以使用点(.)符号嵌套属性参考一个bean。例如,“bean.property_name” public class Customer {Value("#{addressBean.c…...
通用商城项目(下)之——Nginx的安装及使用
(作为通用商城项目的一个部分,单独抽离了出来。查看完整见父页面: ) 加入Nginx-完成反向代理、负载均衡和动静分离 1.配置SSH-使用账号密码,远程登录Linux 1.1配置实现 1、配置sshd 1)sudo vi /etc/ssh/sshd_confi…...
滑动时间窗口的思想和实现,环形数组,golang
固定时间窗口 在开发限流组件的时候,我们需要统计一个时间区间内的请求数,比如以分钟为单位。所谓固定时间窗口,就是根据时间函数得到当前请求落在哪个分钟之内,我们在统计的时候只关注当前分钟之内的数量,即 [0s, 60…...
SpringBoot 使用异步方法
SpringBoot 使用异步方法 在pom文件引入相关依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframe…...
Django框架学习大纲
对于使用 Python 的 Django 框架进行 web 开发的程序员来说,以下几点是必须了解的。 环境配置与项目初始化 命令: pip install django django-admin startproject myproject解析: 使用 pip 安装 Django。使用 django-admin startproject …...
基于matlab实现的电力系统稳定性分析摆幅曲线代码
完整程序: clear; clc; t 0; tf 0; tfl 0.5; tc 0.5; % tc 0.05, 0.125, 0.5 sec for 2.5 cycles, 6.25 cycles & 25 cycles resp ts 0.05; m 2.52 / (180 * 50); i 2; dt 21.64 * pi / 180; ddt 0; time(1) 0; ang(1) 21.64; pm 0.9; pm1 2.44;…...
mybatis基本构成mybatis与hibernate的区别添加mybatis支持
目录 1. mybatis简介 2. mybatis基本构成 3. mybatis与hibernate的区别 4. 项目中添加mybatis支持 1. mybatis简介 Mybatis是Apache的一个Java开源项目,是一个支持动态Sql语句的持久层框架。Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编…...
c++23中的新功能之十四输入输出指针
一、介绍 在c的发展过程中,无论如何发展,c都尽量保持着与C语言的兼容,当然这也是它的一个特点。在实际的应用中,开发者经常遇到的一个问题是,如何把一个指针的值给传出来?有人会说,简单啊&…...
OpenClaw调试技巧:百川2-13B任务失败时的6种排查方法
OpenClaw调试技巧:百川2-13B任务失败时的6种排查方法 1. 为什么需要专门的调试方法? 上周我让OpenClaw自动整理一批会议录音转文字稿,结果凌晨3点收到飞书报警——任务卡在"正在分析关键内容"阶段。第二天检查发现,百…...
Qwen3-4B模型微调指南:提升OpenClaw任务准确率
Qwen3-4B模型微调指南:提升OpenClaw任务准确率 1. 为什么需要微调Qwen3-4B模型 上周我在用OpenClaw整理项目文档时,发现它总是把设计稿和产品需求文档混为一谈。这个看似简单的问题背后,其实是底层Qwen3-4B模型对专业文档分类能力的不足。经…...
本地AI视频剪辑终极实战:用FunClip构建智能内容创作工作流
本地AI视频剪辑终极实战:用FunClip构建智能内容创作工作流 【免费下载链接】FunClip Open-source, accurate and easy-to-use video clipping tool, LLM based AI clipping intergrated || 开源、精准、方便的视频切片工具,集成了大语言模型AI智能剪辑功…...
STM32栈空间溢出处理与优化技术
STM32栈空间溢出处理技术解析1. 栈空间溢出问题概述在STM32嵌入式开发中,函数内部定义的局部变量存储在栈空间中。STM32的启动文件中预定义了栈空间大小,当局部变量占用空间超过预设栈大小时,虽然编译过程不会报错,但运行时可能出…...
Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比
Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比 1. 引言:当AI语音识别遇上“十里不同音” 你有没有遇到过这样的尴尬?用手机语音转文字,自己明明说的是普通话,结果出…...
不止是编译:深入理解OpenHarmony XTS测试套件(acts/hats/dcts)与你的代码质量守护
不止是编译:深入理解OpenHarmony XTS测试套件与代码质量守护 在OpenHarmony生态系统中,代码质量保障从来不是简单的编译通过就能解决的问题。当我们谈论XTS测试套件时,很多开发者第一反应是"如何编译运行",却忽略了这套…...
LFM2.5-1.2B-Thinking-GGUF精彩案例:100字产品介绍生成质量实测分享
LFM2.5-1.2B-Thinking-GGUF精彩案例:100字产品介绍生成质量实测分享 1. 模型简介与测试背景 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型,特别适合在资源有限的环境中快速部署和使用。这款模型采用了GGUF格式和llama.cpp运行时…...
Yuxi-Know终极部署指南:5步解决大模型RAG知识库常见问题
Yuxi-Know终极部署指南:5步解决大模型RAG知识库常见问题 【免费下载链接】Yuxi-Know 基于大模型 RAG 知识库与知识图谱的问答平台。Llamaindex VueJS Flask Neo4j。大模型适配 OpenAI、国内主流大模型平台的模型调用、本地 vllm 部署。 项目地址: https://gitc…...
AI辅助数据库设计:让快马平台智能生成优化过的社区论坛系统数据架构
今天想和大家分享一个用AI辅助设计数据库的实践案例——社区论坛系统的数据架构设计。整个过程在InsCode(快马)平台上完成,体验非常流畅。 业务场景分析 社区论坛的核心是内容交互,需要支持用户发帖、互动和管理。通过AI分析,我们确定了几个关…...
开源工具维护终止:微信云备份工具cloudbak风险应对指南
开源工具维护终止:微信云备份工具cloudbak风险应对指南 【免费下载链接】cloudbak 微信云备份,备份到服务器、Docker、NAS,Web访问。 项目地址: https://gitcode.com/gh_mirrors/cl/cloudbak 事件概述:cloudbak项目生命周期…...
